Ein Blog über Code, Hardware und Co

NAS, Server und Co

Anwendungen, Skripte und Tasks über die Shell im Hintergrund laufen lassen

Anwendungen mit Screen über die Konsole laufen lassen, ohne dabei verbunden zu sein

Im Täglichen Umgang mit Konsole, Server und Co ist es häufig der Fall, dass diverse Skripte oder Anwendungen über das Terminal gestartet werden.
Ein Skript läuft dann standardmäßig so lange, wie das Terminal geöffnet ist.

Das kann zum Problem werden, wenn die Laufzeit des Scripts sehr lang ist, da für die entsprechende Sitzung der Client-Computer laufen muss. Auch instabile Internetverbindungen können schnell zum Problem werden und die Ausführung abbrechen.

Führt man ein Programm in einer SSH-Sitzung aus, so wird die Ausführung mit dem Beenden der Sitzung - aus welchen Gründen auch immer - abgebrochen. 

Die Lösung: Tasks in den Hintergrund schicken und ohne aktive Terminal-Session ausführen.

Das geht zum Beispiel mit der Software Screen.

Was ist Screen für Linux?

Bei der Software Screen handelt es sich um einen Fenstermanager mit dem Anwendungsgebiet auf Terminals und Konsolen (also textbasierten Eingabefenstern).

Wie starte ich ein Script und lasse es im Hintergrund laufen?

1. Überprüfen ob Screen bereits installiert ist

Bei vielen Distributionen wird “Screen” als Werkzeug bereits mitgeliefert.
Ob Screen vorhanden ist, lässt sich einfach mit dem folgenden Kommando herausfinden:
whereis screen

Wenn die Ausgabe Binaries in einem Pfad ausgibt, ist Screen vorhanden.
Wenn nicht, kann Screen einfach über den entsprechenden Paketmanager installiert werden.
Im Falle von Aptitude (Debian und Ubuntu) z.B. mittels:
apt-get install screen

2. Befehl im Hintergrund laufen lassen

Mit dem folgenden Kommando startest du eine Screen-Sitzung, die in den Hintergrund geschickt wird (-d), den Namen “meineSitzung” erhält (-S) und in der das Programm/Skript “Programm” ausgeführt wird.

screen -mdS "Prozessname" ./Programm

Alternativ:
Eine Sitzung mittels “screen -S” starten.
Dann das Programm/Script starten.
Dann die Sitzung mittels “Strg+A+D” in den Hintergrund schicken (detached).

Weitere hilfreiche Screen-Befehle

Starten einer Sitzung mit Namen “meineSitzung”:

screen -S "meineSitzung"

Anzeige aller aktuell im Hintergrund laufenden Screen-Sitzungen:

screen -ls

Aktuelle Sitzung in den Hintergrund schicken:

screen -d “meineSitzung”

Wiederaufnahme der letzten in den Hintergrund geschickten Sitzung (sofern es nur eine ist):

screen -r

Wiederaufnahme der Sitzung mit Namen “meineSitzung”

screen -r “meineSitzung”

Schreibe eine Antwort