Linux Remote Administration von entfernten Systemen mit „nohup“ und „screen“

Ein zentrales Problem bei der Administration von entfernten Systemen ist die Qualität der Verbindung. Bei manchen Programmen, die kann ein Abbruch der SSH-Verbindung zu ernsten Problemen führen zB wenn das verwendete WLAN einen kurzen Aussetzer hat. Um das zu vermeiden verwendet man normalerweise „nohop“

nohup

„nohup“ gibt es schon seit Unix-Zeiten. Ich lernte es kennen, um im Studium im Rechnerpool nicht warten zu müssen bis ein stundenlang laufender Download endlich beendet war.
Mit „nohup Kommando &“ lassen sich Prozesse vom aktuellen Terminal abkoppeln. Der Prozess läuft dann komplett im Hintergrund ab. Egal ob die Verbindung abbricht oder nicht.
Beispiel Syntax: „nohup wget riesiger-download.iso > logfile &“
Wichtig ist das „&“ am Ende, das den Prozess in den Hintergrund legt.
Wenn ein Konsolenprogramm jedoch eine interaktive Eingabe benötigt ist „nohup“ leider keine Option mehr.

screen

Neben „nohub“ gibt es dafür einen weiteren Klassiker der auf jedem Linux System vorhanden ist da es ein Teil der standard GNU-Tools „screen“. Bei manchen modernen Linux Distributionen ist „screen“ wird „screen“ nicht mehr automatisch installiert. Unter Ubuntu kann „screen“ mittels „sudo apt-get install screen“ bequem nachinstalliert werden.

„screen“ ist ein „Taskmanager“ für die Kommandozeile, der auf der Konsole gestartete Programme in den Hintergrund verschiebt. Die mit „screen“ gestarteten laufen auch nach einem Verbindungsabbruch noch problemlos weiter.

Machen wir ein Beispiel:

„screen ./script.sh“

Damit wird „script.sh“ in einer neuen Instanz von „screen“ gestartet wird. Wenn nun die Verbindung zu Server abbricht läuft „script.sh“ ungehindert weiter.
Nachdem die SSH-Verbindung zum Server wieder aufgebaut wurde kann man den Bildschirm mit „screen –x „ wieder in den Vordergrund geholt werden.
Falls mehrere Instanzen von „screen“ laufen können diese mit  „screen –ls“ aufgelistet werden.
Das sieht dann so aus:

screen -ls

There are screens on:

            3266.ttys003.linux  (Detached)

            3319.ttys003.linux  (Detached)

2 Sockets in /var/folders/46/2ssrjhnn33bdts0h2lrysx000000gn/T/.screen.

Mit „screen –r 3266“ kann man sich an die erste  „screen“ Sitzung verbinden (r steht füer reattach).

reptyr

Was, wenn man ein Programm nachträglich in ein eine „screen“ Session verschoben werden soll? Dafür gibt es das Tool „reptyr“.

Zuerst muss man allerdings eine zweite Verbindung zum Zielsystem aufbauen und sich mit der gleichen User-ID anmelden.  In der zweiten Session holt man sich mit „ps ax | grep programmname“ die Prozess-ID (PID) des Programms das man in die Screen-Sitzung übernehmen will. Mit „reptyr PID“ wird es in die reptyr-Sitzung übernommen. Danach kann es mit „screen reptyr PID“ in die neue Screen-Sitzung übernommen werden.

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert