Sitemap | Nicht eingeloggt

Layout: V2_DayTime
V2_DayTime
| V2
V2
| V2 Dark
V2 Dark
| Alle

DE

Tux

Prozesse im Hintergrund ausführen in Linux

Problem

Wenn man sich per Terminal an dem Computer einloggt und zum Beispiel

java -jar minecraft_server.jar nogui

ausführt gibt das JAR auf der Kommandozeile die Ausgaben des Programms auf den Bildschirm zurück. Beenden kann man das mit Ctrl-c, damit man wieder die Kommandozeile bedienen kann.

&

Wenn man

java -jar minecraft_server.jar nogui &

ausführt, wird der Prozess im Hintergrund ausgeführt und man hat die Konsole, obwohl das Programm gestartet wurde sofort wieder zur Verfügung.
Wenn man aber aus dem Terminal ausloggt (auch per SSH zum Beispiel), werden alle von diesem Terminal gestarteten Prozesse beendet.

nohup

Damit das nicht passiert verwenden wir den Befehl:

nohup java -jar minecraft_server.jar nogui &

nohup (no hangup) macht dass das Programm auch nach beenden der Shell (auch SSH Session) weiterläuft. Den Befehl verwende ich um wie oben zum Beispiel den Minecraftserver im Hintergrund zu aktivieren. Das geht aber mit nahezu jedem Befehl.
nohup gibt eine Prozess ID und eine Prozessnummer zurück, die man mit KILL wieder beenden kann.

Leider kann man so die Kommandozeile für den laufenden Prozess nicht mehr zurückgeholt werden. Das heisst, wenn ein Programm auf eine Eingabe wartet, hat man keine Chance den Fokus wieder auf das Programm zu bekommen und Eingaben zu machen.
Dafür bietet sich das Programm Screen an.

Prozesse im Hintergrund ausführen und für Eingaben zurückholen mit Screen

Screen ist ein Programm, das es uns erlaubt ein Terminalfenster zu öffnen, das man in den Hintergrund schieben kann. Auch wenn man aus dem Terminal ausloggt, bleibt das Fenster im Hintergrund offen und zusätzlich kann man es sogar zurückholen. Diese Vorgehensweise ist sehr zu empfehlen für Serverprogramme, bei denen man mit der Kommandozeile noch zu einem späteren Zeitpunkt eingaben machen möchte.

So installieren wir screen:

sudo apt-get install screen

Jetzt starten wir Screen:

screen

Jetzt kriegt man eine ganz normal aussehende Terminalansicht und kann einen beliebigen Prozess starten:

PROZESS

Der Prozess läuft jetzt ganz normal durch oder wartet auf Eingaben. Dieses Terminal kann man mit mit CTRL-A + d in den Hintergrund schieben und dann das offene Terminal oder die SSH-Verbindung schliessen. Der Prozess läuft im Hintergrund weiter:

exit

Um einen Screen zurückzuholen, kann man zuerst herausfinden ob überhaupt noch Screens offen sind:

screen -ls

Und danach den gewünschten Screen zurückholen. Falls nur ein Screen offen ist, ist es nicht nötig eine Screennummer anzugeben:

screen -r Screennummer

Hier findest Du weiterführende Infos über Screen und die verschiedenen Anwendungsmöglichkeiten (Englisch): 10 Screen Command Examples to Manage Linux Terminals.

Natürlich kannst Du wie immer auch folgenden Befehl eingeben um mehr Infos über den Befehl screen zu bekommen:

man screen

Infos zum Dokument
Author: Christoph Iseli
Datum: 08.07.2013
Datum: 05.05.2014

3 Kommentare

#1 Von Gast in N/A am 25.5.2016 um 19:44 Uhr

Danke!

#2 Von Gast in Paderborn am 29.12.2017 um 09:32 Uhr

Super, Danke für den Beitrag

#3 Von Gast in Schmalkalden am 31.3.2018 um 12:55 Uhr

Danke, Sehr Hilfreicher Beitrag Smiley Lachen

Einen neuen Kommentar hinzufügen

Info: Wenn Du eingeloggt bist, musst Du keine Userdaten mehr eingeben.

Ort:
(Optional)

Kommentar:

Impressum
Programmierung: Christoph Iseli | Design: Christoph Iseli
Webseitencode: Darf frei kopiert / verwendet werden (Downloads) | Inhalt: Darf frei verwendet werden, solange ein Link auf diese Seite mitgegeben wird.