screen: Fenster-Manager für den Terminal
screen ist ein Must-Have für Einsteiger und cli-Enthusiasten gleichermaßen
Wunderbares Tool, verwirrende Begrifflichkeiten: screen ist ein Fenster-Manager, aber für die Kommandozeile. Es poppen also keine Desktop-Fenster auf. Aber Ihr könnt Programme in eigenständigen Bereichen innerhalb des Terminals laufen lassen und zwischen diesen wechseln. Und das eröffnet interessante Möglichkeiten.
Was macht screen?
Kurz zu den Begriffen: Alles hier spielt sich in einem einzigen Desktop-Fenster statt, also zum Beispiel einer lokalen Bash oder einer SSH-Verbindung. Fenster im Sinne von screen sind virtuelle Terminals innerhalb dieser Terminals.
Mit dem Kommando screen startet Ihr eine neue Session, die zunächst ein Fenster enthält. In diesem Fenster läuft eine Shell, zum Beispiel sh oder bash. Hier könnt Ihr ganz normal arbeiten, die Session mit exit verlassen und über screen-eigene Kommandos zwischen Sessions wechseln. Innerhalb einer Session könnt Ihr natürlich auch mehrere Fenster nebeneinander darstellen.
Und das hat ganz handfeste Nutzen: Zum Beispiel lassen sich Programme in Sessions/Fenstern ausführen, die ansonsten den Terminal blockieren. Natürlich könnte man diese auch einfach im Hintergrund ausführen, aber so kann man die Ausgabe des Programms besser im Auge behalten. Außerdem funktioniert das mit dem Hintergrund auch gar nicht bei allen Programmen!
Natürlich sind mehrere Fenster gleichzeitig so nützlich wie eh und je - ganz analog zum Desktop.
Außerdem ermöglicht screen vollständige Logs: Bash und andere Shells speichern standardmäßig eine History, die Eure eingegebenen Befehle beinhaltet. Mit screen können aber auch die Ausgaben der Befehle gespeichert werden. Das ist für Einsteiger praktisch, um nachvollziehen zu können, was sie da gerade gemacht haben. Auch für Fehlerberichte, Schulungsunterlagen und Protokolle sind vollständige Mitschnitte eine feine Sache.
Mit screen arbeiten
Die Installation sollte bei den meisten Linux-Distributionen über das Paketmanagement laufen, unter Debian, Ubuntu und Abkömmlingen also:
sudo apt install screen
Wenn Ihr anschließend einfach mal
screen
eingebt, landet Ihr auf einem Info-Bildschirm und anschließend in einer neuen Session, in der eine Shell in einem Fenster läuft. Und nun wird es etwas tricky: Um die Session zu "verlassen" braucht es folgenden Befehl:
Strg+a d
Strg+a leitet bei screen die Befehlseingabe ein und das Kürzel d steht für Detach, also loslösen. Ihr befindet Euch nun also wieder in der Ur-Shell. Nun geht es wieder zurück in die Session:
screen -r
Mit -r für Resume landet Ihr wieder in Eurer Session.
Interessant wird es mit mehreren Sessions: Sessions lassen sich mit Namen versehen, auflisten und dann individuell wieder resumen:
screen -S meinesession
screen -list
screen -r meinesession
Hier die Ausgabe von von screen -list:
Und wenn Ihr einen Session-Log haben wollt:
screen -r meinesession
Strg+a :log
Mit Strg+a wird wieder die Befehlseingabe gestartet, per : gibt es dann unten einen Prompt und log erstellt eine Logdatei mit allen Befehlen und deren Antworten im Ordner, aus dem Ihr die screen-Session aufgerufen habt. So sieht der Prompt aus:
Fenster im Fenster
Eye Candy ist screen nicht, aber verdammt mächtig. Und gerne verwirrend. Bislang habt Ihr Sessions erstellt, in denen jeweils ein Fenster lief. Genauer gesagt: Es gibt einen Layout-Bereich und darin ein Fenster. Der Bereich lässt sich nun vertikal splitten.
screen -r meinesession
Strg+a :split
Im oberen Bereich verbleibt das bisherige Fenster, der untere Bereich ist zunächst leer.
Wechselt dann in den neuen Bereich und erstellt ein neues Fenster:
Strg+a Tab
Strg+a c
Und schon habt Ihr zwei Fenster im Blick. Bereiche lassen sich weiter aufsplitten und das natürlich auch horizontal (über :split -v).
Es geht noch so viel mehr ... Die Fenster in der Session können zum Beispiel auch alle im Vollbild hintereinander liegen, mit Strg+a n lässt sich dann zum jeweils nächsten Fenster wechseln. Konfigurationen für Sessions können aus Dateien gelesen werden. Copy&Paste funktioniert zwischen Fenstern. Fenster können Titel bekommen. Ein Fenster-Manager ist eben keine Kleinigkeit.
Am Ende dürfte ein kompletter Fenster-Manager für den Terminal nur für die wenigsten Nutzer relevant sein. Aber einzelne Funktionen erleichtern selbst Einsteigern den Tag. Einen solchen Tiling-Fenster-Manager, der den Bildschirm in ein Raster einteilt, gibt es übrigens auch für den Desktop - das dürfte mal richtig nischig sein!
Ich nutze screen gern bei einer ssh-Verbindung. Wenn ein interaktiv gestarteter Prozess länger dauert, kann ich screen einfach „detachen“ und die ssh.Verbindung schließen. Beim nächsten Einloggen kann ich das screen-Fenster einfach wieder öffnen.
Ich habe mich nicht getraut auf den Punkt einzugehen, weil ich screen dafür selbst nie genutzt habe – also Danke für die Ergänzung! tT Btw.: Da ich als Journalist der Neugierde verpflichtet bin: Sind die Fotos auf Deiner Seite unter „infrared“ wirklich Infrarot-Fotos? Vielleicht bei Tag? Sieht fast wie Timelapse aus … auf jeden Fall interessant, vor allem die Mole!