Wenn man einen Linux Server über SSH administriert gibt es ein Problem:
Bei lange laufenden Abläufen muss man Angst haben dass die SSH-Session beendet wird (z.B. weil die Netzwerkverbindung kurz weg ist) und damit das gerade laufende Programm/Tool auch beendet wird.Denn dieses gehört zu der SSH-Session und wenn diese beendet wird, wird es auch beendet. Egal was es gerade tut.
Das kann natürlich je nachdem desaströse Ausmaße annehmen.
Zur Hilfe kommt: SCREEN
Mittels ’screen‘ macht man eine quasi normale Shell-Sitzung auf, die aber im Hintergrund läuft und von der man sich jederzeit trennen und reverbinden kann. Und wenn die SSH-Session stirbt die den Screen gestartet hat macht das auch nichts, denn der Screen bleibt bestehen.
Einen screen startet man so:
screen
Kommandos zum Screen schickt man mittels ‚Strg+A‘ und dem Kommando, z.B. ‚d‘ zum trennen dieser Screen-Session.
(Screen läuft weiter, beenden tut man ihn mit ‚exit‘ – also wenn das Programm welches der Screen laufen lässt (in dem Fall die Shell) beendet wird).
Alle aktiven Screens (und ihre IDs) sieht man mittels:
screen -ls
Mit
screen -r [SCREENID]
kann man sich wieder zu einem screen verbinden.
Mit
Strg + A und danach ESC
kann man innerhalb der Ausgabe eines Screens nachträglich hoch-, und runterscrollen.
(Mit den Pfeiltasten oder Bild-auf, Bild-ab kann man nun scrollen, im allgemeinen gelten die vi-Kommandos, heißt also ‚gg‘ für ‚zum Startpunkt‘ und ‚Shift + g‘ für ‚ans Ende‘ – beenden tut man den Scroll-Modus indem man einfach wieder ESC tippt!)
Und wenn man ein Kommando gleich direkt in einem detachten Screen starten will geht das so:
screen -d -m COMMAND
(Der Screen läuft nun solange COMMANDO läuft)
Und wenn man vor lauter Screens nicht mehr durchblickt, so kann man dem Screen einen Namen geben:
screen -S MEINSCREEN -d -m COMMAND
Ich nutze screen immer wenn ich ein langes Kommando durchführe welches nicht abgebrochen werden sollte weil irgendein Problem mit meiner Netzwerkverbindung auftritt.
z.B. Rein-, oder Rausladen von Datenbanken
Und dann nutze ich es noch um virtuelle Maschinen mittels qemu in einem Screen laufen zu lassen, oder einen Minecraft-Server.
So läuft das ganze immer schön in seiner Sitzung und ich kann mich jederzeit drauf verbinden und die virtuelle Maschine oder den Minecraft-Server administrieren.
PS: Installiert wird Screen, wie zu erwarten, unter Ubuntu mit:
apt-get install screen
Und als extra Goodie gibts hier noch ein Script welches einen Screen mit dem Namen ‚meinscreen‘ nur startet, wenn er noch nicht läuft:
(als Test dient hier das Programm ‚yes‘ welches nichts anderes macht als ‚y‘ auf den Bildschirm zu schreiben – endlos 🙂 )
#!/bin/bash if ! screen -list | grep -q "meinscreen"; then echo `date`": Starting yes" screen -S meinscreen -d -m yes else echo `date`": yes already running" fi
Schreibe einen Kommentar