Lebensversicherung

Manche bezeichnen screen als Window-Manager für die Konsole. Das Programm erlaubt es, in einem Terminal gleichzeitig mehrere Sitzungen zu öffnen - und noch einiges mehr.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Udo Seidel

Wer Systeme aus der Ferne administriert, hat mit verschiedenen Schwierigkeiten zu kämpfen. Bricht etwa die Netzverbindung ab, ist die Sitzung beendet - und alle gestarteten Anwendungen mit ihr. Zwar kann man Hintergrundprozesse mit nohup am Leben halten. Das Programm erlaubt es jedoch nicht, eine unterbrochene Sitzung fortzusetzen.

Als Alternative bietet sich der Terminal-Multiplexer screen an. Er gestattet es nicht nur, Sitzungen jederzeit zu unterbrechen oder fortzusetzen. Mehrere Nutzer können sich eine Sitzung teilen - unabhängig davon, wo sie sich gerade befinden.

Mehr Infos

Onlineressourcen

Nach dem Start präsentiert screen dem Nutzer beinahe die gewohnte Kommandozeile. Drückt man jedoch Strg-A, um den Cursor an den Zeilenanfang zu bewegen, wird der Unterschied offensichtlich: In der Standardeinstellung beginnen alle screen-Kommandos mit Strg-A als sogenannter Escape-Sequenz. Ein weiterer Tastendruck vervollständigt den Befehl. Strg-A c etwa erzeugt ein neues „Fenster“. Mit Strg-A n und Strg-A p kann man vor- und rückwärts durch die Fenster innerhalb der Sitzung blättern. Strg-A a reicht das Zeichen Strg-A an die Shell weiter. Tabelle 1 fasst die gängigen Kommandos zusammen.

In der Konfigurationsdatei, meist /etc/screenrc, kann der Systemverwalter die Voreinstellungen ändern. Nutzer können ihre individuellen Einstellungen in $HOME/.screenrc hinterlegen. Die zahlreichen Optionen sind in der Manpage ausführlich dokumentiert.

Öffnet der Nutzer ein neues Fenster, startet screen darin seine bevorzugte Shell. Ihren Namen erfährt das Programm aus der Umgebungsvariablen SHELL. Gleichzeitig dient der Name der Shell als Titel des Fensters. Mit Strg-A A lässt sich jedoch jedem Fenster ein eigener, aussagefähigerer Titel zuordnen. Strg-A w zeigt die Titel aller offenen Fenster an.

Ein- und Ausgaben speichert screen im sogenannten „Scrollback Buffer“. Wer mehr Platz benötigt als 100 Zeilen, kann den Puffer etwa mit dem Eintrag scrollback 2000 in der Konfigurationsdatei vergrößern. Wer im Puffer blättern will, muss mit Strg-A [ oder Strg-A Esc in den Kopier/Scroll-Modus wechseln. Alte vi-Hasen sollten sich dort leicht zurechtfinden: Die Tasten h, j, k und l steuern den Cursor, mit Strg-U, Strg-B, Strg-D und Strg-F kann man blättern. Markiert man mit der Leertaste Anfang und Ende einer Textpassage, lässt sich der Text mit Strg-A ] in die Kommandozeile übernehmen. Mit Esc kommt man zurück in die normale Betriebsart.

Für jede Sitzung legt screen eine Named Pipe als Kommunikationskanal an. Ihr Name dient außerdem dazu, die Sitzung zu identifizieren. Das Kommando screen -ls zeigt alle aktiven Sitzungen an. Mit screen -r lässt sich eine unterbrochene Sitzung fortsetzen. Sind mehrere aktiv, muss der Nutzer den Namen der gewünschten Sitzung an das Kommando anhängen. Mit Strg-A d kann er eine laufende Sitzung unterbrechen und in den Hintergrund schicken. Vergisst er das, kann er eine Verbindung mit screen -d nachträglich unterbrechen (siehe Listing 1). Wer die Kommandozeilenbefehle zu umständlich findet, kann seine Sitzungen mit dem menügeführten Zusatzprogramm screenie verwalten (siehe Kasten „Onlineressourcen“).

Mehr Infos

Listing 1

$ screen -ls
There are screens on:
15835.pts-2.rechner (Detached)
16097.pts-4.rechner (Attached)
2 Sockets in /var/run/screen/S-user1
$ screen -d 16097
[16097.pts-4.rechner detached.]
$ screen -r 15835

# unterbrochene Sitzung geht weiter

Andockmanöver: screen -r setzt eine unterbrochene Sitzung fort.

Fügt man die Zeile multiuser on in die Konfigurationsdatei ein, startet der Terminal-Multiplexer im Multiuser-Modus. Je nach System muss der Nutzer eventuell noch mit chmod u+s /usr/bin/screen das Setuid-Bit setzen und im Verzeichnis /var/run/screen das Gruppenschreibrecht mit chmod g-w entfernen. Anschließend kann der Anwender einzelne Fenster für andere Nutzer freigeben. Will etwa Alice sich mit einer Sitzung von Bob verbinden, muss sie screen -xr bob/ eintippen.

In aktuellen Linux-Distributionen ist screen bereits enthalten. Nutzer anderer Betriebssysteme finden den Quellcode des Programms auf den Webseiten des GNU-Projekts.

Dr. Udo Seidel
arbeitet als Intersystem Communication Specialist bei der Amadeus Data Processing GmbH in Erding.

Gängige screen-Kommandos
Strg-A a Strg-A senden (Cursor am Zeilenanfang positionieren)
Strg-A c neues Fenster öffnen
Strg-A n zum nächsten Fenster wechseln
Strg-A p zum vorigen Fenster wechseln
Strg-A w Titel aller Fenster anzeigen
Strg-A “ Fenster-Menü einblenden
Strg-A ? Hilfe einblenden
Strg-A x Terminal sperren
Strg-A k aktuelles Fenster schließen („kill“)
Strg-A 0 zum Fenster 0 ...
Strg-A 9 ... bis 9 wechseln
Strg-A d screen in den Hintergrund schicken („detach“)
Strg-A [ in den Kopier/Scroll-Modus wechseln

(mr)