öffnen Tags

öffnen Kategorien

Vom WebReader vorlesen lassen

GNU Screen: The ultimate Terminal-Multiplexer

03. Jan 2010, 22:29

Wer kennt es nicht: Man möchte auf einem Server eine Konfiguration anpassen, dabei natürlich aber auch die Logfiles im Auge behalten. Hierfür bräuchte man zwei SSH-Sessions in denen man jeweils unabhängig root-Rechte erlagen muss. Abhilfe schafft GNU's Screen!

Zwei Verbindungen sind noch verkraftbar möchte man meinen, beabsichtigt man aber noch ein weiteres Logfile nebenbei zu sichten und ein Script zu starten, das auch weiter läuft wenn die Verbindung mal abbrechen sollte, kommt man schon in Verlegenheit. Mit Screen kann man praktisch eine Verbindung in Verschiedene Sessions splitten, welche bei einem Verbindungsabbruch weiter laufen, man kann sie später wieder aufnehmen.

Der folgende Befehl installiert die Software auf dem Rechner:

1
aptitude install screen

Die Benutzung von Screen ist etwas gewöhnungsbedürftig muss ich zugeben, geht aber schnell ins Blut über. Startet man das Tool per simplen screen auf der Kommandozeile, wird man mit einem Begrüßungsbildschirm empfangen, nach einer Bestätigung sieht erst einmal alles aus wie vorher. Tippt man nun exit ein, landet man wieder in der Ausgangs-Shell.

Via Ctrl+a kann man dem Mutiplexer einige Befehle zukommen lassen. Um im Screen nun eine weitere Shell daneben anzulegen, tippt man nach einander Ctrl+a und c ein. Zwischen den verschiedenen Shells kann mit Ctrl+a und SPACE gewechselt werden. Um das zu verdeutlichen tippt man am besten in eine Shell etwas hinein und wechselt dann zwischen den einzelnen Terminal-Instanzen hin und her, bis man wieder bei der ausgehenden landet.

Weiterhin kann man mit Ctrl+a und d (wieder nacheinander) den Screen detachen, das heißt er wird im Hintergrund abgelegt, mit screen -r auf der Kommandozeile belebt man ihn dann wieder.

Weitere interessante Befehle:

Ctrl+a c
Erzeugt ein weiteres virtuelles Terminal

Ctrl+a SPACE
Wechselt zum nächsten Screen in Erzeugungsreihenfolge

Ctrl+a BACKSPACE
Wechselt zum vorherigen Screen in Erzeugungsreihenfolge

Ctrl+a [NUM]
Wechselt zu Screen Nummer NUM

Ctrl+a Ctrl+a
Wechselt zum Terminal, das als letztes benutzt wurde

Ctrl+a w
Zeigt eine Übersicht aller offenen virtuellen Terminals an

Ctrl+a d
Screen detachen, die Sitzung wird in den Hintergrund geschoben und kann später von jedem beliebigen Terminal des Benutzers wieder aufgenommen werden

Ctrl+a k
virtuelles Terminal schließen (nur ein Terminal, nicht der ganze Screen)

Ctrl+a
Screen beenden

Ctrl+a A
Titel des aktuellen Terminals ändern (dient der Übersicht bei vielen virtuellen Terminals)

Ctrl+a [
Copy-Mode, man kann nun mit den Pfeiltasten im Screen-Buffer herum fahren

Ctrl+a ?
Übersicht aller Tastaturkürzel

Ctrl+a a
Sendet ein Ctrl+a an das virtuelle Terminal (ansonsten wird ein Ctrl+a immer durch den Multiplexer abgefangen)

Bisher ist die Arbeit im Screen immer noch unübersichtlich, hierfür gibt es eine .screenrc. Diese Datei kann man in seinem $HOME anlegen, in der einige Screen-Definitionen vorbereitet werden. Die Syntax des Files hier zu erklären würde zu weit führen, ich habe eine umfangreiche und gut kommentierte Ressource-Datei zusammengestellt, ihr könnt sie hier herunterladen (1,89 KB) .


Mit dieser Startdatei werden ständig zwei Statusleisten im unteren Fensterbereich angezeigt. Die eine listet die virtuellen Terminals auf, die andere zeigt einige Informationen über das System an, auf dem man sich befindet (siehe Bild).

Des weiteren startet eine neue Screen-Sitzung sofort mit 3 virtuellen Terminals, im ersten ein htop, das zweite stellt sofort eine Shell in /var/log bereit und die dritte Shell startet im $HOME.

Mit dieser .screenrc werden auch ein paar weitere Tasten mit Sonderfunktionen belegt:

F2
neuen Screen erzeugen

F3
in den letzten Screen wechseln

F4
in den nächsten Screen wechseln

F5
Copy-Mode einschalten

F6
Titel des Terminals ändern

F7
Screen detachen

F8
Quit

Nun lässt Screen seinen Buffer auch in den Buffer des xterm einfließen, das heißt man kann auch mit dem Mausrad scrollen und muss nicht immer den Copy-Modus einschalten. Wer diese Datei verwenden möchte, sollte die grml-scripts installieren, oder die folgenden beiden Zeilen auskommentieren:

1
2
backtick 1 0 60 /usr/bin/cpu-screen
backtick 2 0 60 /usr/bin/ip-screen

Um die GRML-Scripts zu installieren kann man folgende Zeilen in die sources.list aufnehmen:

1
2
deb http://deb.grml.org/ grml-stable main
deb-src http://deb.grml.org/ grml-stable main

und dann das Paket mit folgendem Befehl einspielen:

1
aptitude install grml-scripts

In diesen Scripts sind auch viele weitere nützliche Dinge, aber GRML werde ich einen weiteren Beitrag widmen.

Also viel Spaß mit Screen und meiner .screenrc, wird euer Leben erheblich erleichtern ;-)

Copy&Paste:

1
wget -O $HOME/.screenrc http://esmz-designz.com/media/download.php?file=.screenrc

Tags: Bash GNU Linux Software Unix

Kategorien: Betriebssystem Linux Software Unix

© 2009-2018 by Martin Scharm