IT

screen das Kommandozeilentool kurz vorgestellt

screen ist eins der Programme, dass ich lieben gelernt habe, obwohl ich nur eine Fähigkeit des Programms wirklich nutze. Die Fähigkeit, ein Progamm selbst auf einer schlechten SSH Verbindung weiter laufen lassen zu können.

Was ist screen?

Wer screen nicht kennt, screen ist eine Art Windowmanager für die Konsole. Wobei Fenster hier eher im übertragenen Sinne gemeint sind, es ermöglicht in einer Konsole mehrere Konsolen laufen zu lassen und zwischen diesen per Tastenkombination um zuschalten. Oder heißen die Dinger dann nicht Konsolen sondern Terminals? Keine Ahnung.
In modernen Windowsmanagern wie KDE ist das nicht wirklich wichtig, da die ganzen Konsolenprogramme oft schon die Möglichkeit anbieten, einfach eine neue Unterkonsole zu öffnen.

So spielt screen seine Stärken eher aus, wenn gar kein grafischer Fenstermanager zur Verfügung steht und das ist meistens bei einer SSH-Verbindung der Fall. OK, ich könnte einfach eine Neue aufmachen und schon wäre auch dieses Problem gelöst. Zusätzlich hat screen seine Probleme mit den Shortcuts, da z.b. wenn ich SSH und dann screen in einer Konsole in KDE öffne, die Hälfte der Shortcuts für screen von KDE belegt sind. Bei mir funktioniert z.b. nur das rechte Strg/Crtl für die Kommandos für screen, aber nicht die linke Variante, da die, glaube ich komplett von KDE vereinnahmt ist.

Der Prozessbaum

Aber das ist alles,wie gesagt, nicht der Grund, warum ich screen toll finde und benutze. Damit screen in einer Konsole mehrere Konsolen anbieten kann, hängt es sich im Prozessbaum um und das ist eine wunderbare Eigenschaft. Was genau bedeutet das? In Linux und in BSD, soweit ich das verstanden habe, gibt es ein Programm (init), von dem alle anderen Programme ausgehen, also gestartet werden, aufbauend wie ein Baum. Es gibt also Elternprogramme und Kinderprogramme. Kurz gesagt, wenn wir KDE als ein Programm sehen, dann ist der Browser, den wir in KDE starten ein Kindprogramm von KDE. Und wenn wir KDE beenden, wird der Browser zwangsläufig auch beendet. Kein Kindprogramm kann seine Eltern überleben, außer es wird im Baum umgehangen und genau das macht screen. Dieser Aufbau der Betriebsysteme ist außerdem der Grund, warum wir in der IT Dinge sagen können, wie „Bitte stellen Sie sicher, dass vorher alle Kinder terminiert worden sind.“ und niemand findet das bedenklich.

Wer sich seinen aktuellen Baum mal ansehen will:

ps -ef --forest

screen mit SSH

Wenn ich also per SSH auf einen Server gehe und dort ein Programm für längere Zeit ausführen möchte, dann kann ich die SSH-Verbindung nicht schließen. Schließt sich die Verbindung trotzdem, aus welchem Grund auch immer, wird mein Programm, dass ich gerade ausführe, gestoppt. Dies geschieht, weil es eines der Kindprogramme der SSH-Verbindung ist. Starte ich vorher screen in der SSH-Verbindung, auf dem Server und starte dann mein Programm, wird die komplette Konsole/Kommandozeile mit dem ausgeführtem Programm im Prozessbaum umgehängt und ich kann ohne Probleme die SSH-Verbindung schließen.

Verlorene Session zurückholen

Nach einiger Zeit komme ich zurück, verbinde mich wieder per SSH und tippe:

screen -r

Und nun habe ich praktisch meine alte Konsole zurück. Mit exit einfach screen verlassen, wenn fertig und screen ist beendet. Einfacher geht es nicht.

Wenn es mehrere Session gibt, muss bei screen -r die Nummer mit angeben werden und Session können auch selbständig verlassen werden, damit sie im Hintergrund weiterlaufen. Es gibt auch die Multiuserfähigkeit, d.h. mehrere Nutzer können die gleiche Session lesen oder bearbeiten. Aber dafür Verweise ich auf die Manpages von screen.

In diesem Sinne

Viel Spaß

Tagged ,

Schreibe einen Kommentar

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