Mit Screen verwalten Sie bequem viele Terminalfenster in einer einzigen Sitzung. Vor allem für Admins, die ihr tägliches Werk ohne grafische Umgebung verrichten, bietet ein Terminal-Multiplexer zahlreiche Annehmlichkeiten.

Auch in Zeiten, in denen auf dem Schreibtisch eines Administrators Rechner mit leistungsfähigen Prozessoren und mehrere Monitore mit tollen grafischen Oberflächen stehen, gilt es, die Server in den Rechenzentren und entsprechenden, oft weit abgelegenen Räumen nach wie vor über die Kommandozeile zu steuern. Upgrades, Neuinstallationen, Programmentwicklung und Monitoring – da kommen viele Dinge zusammen, die parallel laufen müssen. Oft hockt der Admin vor etlichen Terminalsitzungen und greift auf diesem Weg auf einen oder mehrere Server zu. Viele Fenster bergen jedoch die Gefahr, im Chaos die Übersicht zu verlieren.

Terminal-Multiplexer wie Tmux oder Screen bringen Ordnung in das Chaos: Sie ermöglichen unter anderem mehrere Terminalfenster in einer Sitzung und erlauben das Parken und Wiederaufrufen einer Session, ohne die darin laufenden Prozesse zu unterbrechen. Das hilft auch dann, wenn sich überraschend eine Netzverbindung verabschiedet. Zudem lassen sich Sitzungen mit Kollegen teilen, was bei kniffligen Problemen oft schneller zu einer Lösung führt.

Wir werfen hier einen näheren Blick auf das Multiplexer-Urgestein GNU Screen [1]. Es wurde 1987 von Oliver Laumann an der Technischen Universität Berlin unter dem Namen BSD Screen entwickelt und über die User-Group Net.sources veröffentlicht. In den Jahren 1993 bis 2002 entwickelten hauptsächlich Jürgen Weigert und Michael Schroeder von der Universität Erlangen Screen weiter. Wayne Davison übernahm den Staffelstab 2004, bevor der Multiplexer in einen mehrjährigen Dornröschenschlaf versank, währenddessen es nur sehr geringfügige Neuerungen gab. Umso mehr überraschte es, als Anfang dieses Jahres der aktuelle Maintainer Amadeusz Slawinski die Veröffentlichung einer neuen Screen-Version bekannt gab [2].

Screen bietet deutlich mehr als nur weiterlaufende und von andernorts wieder aufrufbare Prozesse in einem Terminalfenster oder kollaborativen Zugriff auf die Kommandozeile. Innerhalb einer Screen-Session lassen sich mehrere Terminalfenster öffnen, Tastatureingaben loggen oder Inhalte zwischen zwei Fenstern auszutauschen. Arbeitet in einem Terminal etwa ein länger laufender Prozess, lässt sich Screen anweisen, eine Benachrichtigung auszugeben, sobald es Änderungen auf der Kommandozeilenebene gibt. Daneben lässt sich ein Fenster auch teilen, sodass man mehrere Sitzungen parallel einsieht.

Installation GNU Screen lässt sich unter allen gängigen Distributionen schnell und bequem aus den Paketquellen installieren. Unter Debian und dessen Derivaten wie Ubuntu oder Mint installieren Sie den Multiplexer mit apt-get install screen . Anwender von Arch Linux behelfen sich mit pacman -S screen . Möchten Sie die neueste Version installieren, müssen Sie den Quellcode [3] herunterladen und mit dem klassischen Dreischritt ./configure; make; sudo make install selbst kompilieren.

Screen im Einsatz

Sie starten den Terminalmultiplexer über den simplen Aufruf screen . Je nach Distribution lädt Screen in einem Infoschirm oder direkt in einem Terminalfenster. In diesem geben Sie Ihre Befehle genauso ein, wie Sie es in einem gewöhnlichen Terminal auch tun – so weit, so gut. Der einzige Vorteil besteht bisher darin, dass sich die Screen-Session wieder aufrufen lässt, falls die Verbindung einmal abbricht. Doch Screen kann viel mehr.

Bei der Arbeit mit Screen kommen Sie um das Verinnerlichen einiger Tastenkürzel nicht herum. Screen benutzt [Strg]+[A] als Steuersignal für weitere Kommandos. Geben Sie etwa danach noch ein [C] ein, öffnen Sie innerhalb von Screen ein weiteres Fenster. [Strg]+[A],[Umschalt]+[2] listet alle Fenster auf und erlaubt einen Wechsel (Abbildung 1) zwischen ihnen. Alternativ nutzen Sie die Nummer aus der Übersicht und springen direkt mit [Strg]+[A] gefolgt von der Fensternummer (zwischen 0 und 9) in das gewünschte Fenster. [Strg]+[A] gefolgt von der Eingabe eines Fragezeichens zeigt Ihnen eine Übersicht über alle Tastenkommandos an. Mit [Strg]+[A],[K] beenden Sie das Fenster wieder; das Schließen des letzten Fensters terminiert auch die Screen-Sitzung.

Sollte der ungewöhnliche Fall eintreten, dass Sie in einer Session mehr als zehn Terminalfenster starten, dann wechseln Sie mittels [Strg]+[A] und [Umschalt]+[#], gefolgt von der Nummer, in ein Fenster mit einer mehrstelligen Nummer. Dazu muss Screen allerdings mit einer höheren MAXWIN -Einstellung kompiliert worden sein. Alternativ blättern Sie mit [Strg]+[A] gefolgt von [N] beziehungsweise [P] vor- oder rückwärts durch die Fenster. In welchem Fenster Sie sich gerade befinden, erfahren Sie mit [Strg]+[A],[W].

Nutzen Sie mehrere Screen-Fenster, dann verlieren Sie schnell die Übersicht, da beim Einsatz der Bash-Shell sämtliche Fenster einfach nur bash heißen – wo welcher Prozess läuft, lässt sich nicht erkennen. Sie könnten sich nun merken, was sich hinter den einzelnen Fensternummern verbirgt. Besser helfen Sie sich allerdings mit [Strg]+[A],[Umschalt]+[A] und der Möglichkeit, jedem Fenster einen eigenen Namen zu geben. So wissen Sie sofort, ob das Update in Fenster 7 oder 9 läuft und die Config-Datei mit Vim im Fenster 5 bearbeitet wird. Setzen Sie einmal ungewollt das Kommandozeichen an Screen ab, teilen Sie Screen mithilfe von [AltGr]+[Q] mit, dass es sich um einen Irrtum handelt.

Murphys Gesetz verlangt, dass Sie immer dann die Laufzeit eines Prozesses unterschätzen, wenn Sie zu einer festen Uhrzeit das Büro verlassen müssen. Kandidaten dafür sind beispielsweise ein vollständiger Scan des Netzwerks oder eine komplette LaTeX-Installation. Haben Sie solch einen Vorgang in weiser Voraussicht in einer Screen-Sitzung gestartet, dann koppeln Sie die Sitzung mit [Strg]+[A],[D] einfach vom Terminal ab. Später loggen Sie sich via SSH auf dem Server ein und nehmen die Sitzung mit screen -r wieder auf.

Führen Sie mehrere Sitzungen parallel aus, geben Sie dem Aufruf noch die zu Screen gehörige PID mit, die Sie mittels screen -ls zutage fördern. Alternativ geben Sie der Screen-Session beim Start mit dem Parameter -S <§§I>Titel<§§I> einen Namen mit. Läuft die Sitzung bereits, wechseln Sie mit [Strg]+[A],[Umschalt]+[.] auf die Screen-Kommandozeile und benennen dann die Sitzung mithilfe des Kommandos sessionname <§§I>Titel<§§I> .

Auf Wunsch informiert Sie Screen über den Fortschritt eines lang laufenden Prozesses. Laden Sie beispielsweise große Dateien herunter, migrieren Server oder kompilieren große Programme, weisen Sie Screen mit [Strg]+[A],[Umschalt]+[M] und [Strg]+[A],[Umschalt]+[-] an, kurz Bescheid zu geben, wenn es in einem Fenster Aktivitäten feststellt oder ein Job abgeschlossen wurde.

Alternativ teilen Sie das Screen-Fenster in mehrere Bereiche und behalten so länger laufende Prozesse im Blick (Abbildung 2). Ältere Screen-Versionen erlauben nur ein horizontales Teilen, das Sie mit [Strg]+[A],[Umschalt]+[S] aktivieren. In den neuen Screen-Generationen ermöglicht das Programm über [Strg]+[A],[AltGr]+[<] auch eine vertikale Aufteilung. Die einzelnen Unterfenster bezeichnet Screen dabei als Regionen. Sie wechseln mit [Strg]+[A],[Tab] zwischen den sichtbaren Regionen. Mit [Strg]+[A],[Umschalt]+[X] beenden Sie die gerade aktivierte Region wieder.