Manchmal kommen sie wieder – screen

Zu Befehl

01.01.2001
Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Haben Sie sich schon oft darüber geärgert, dass Sie zwischen vielen Terminals hin- und herschalten mussten, weil Sie mehrere Anwendungen gleichzeitig im Vordergrund laufen lassen wollten? Oder waren Sie sauer, weil ein Prozess, den Sie auf einem Rechner am Arbeitsplatz starten mussten, nicht rechtzeitig zu Feierabend fertig war, Sie aber die Ausgabe des Programms kontrollieren wollten? screen ist ein äußerst mächtiges Tool, das Ihnen viele Aufgaben erleichtern kann.

Bevor Sie das Programm zum ersten Mal starten, schauen Sie am besten nach, welche Umgebungsvariable für TERM (Terminalemulation) gesetzt ist, diese wird nämlich direkt beim Programmaufruf ausgewertet:

huhn@asteroid:~$ echo $TERM
 xterm
 huhn@asteroid:~$ export TERM=vt100
 huhn@asteroid:~$ echo $TERM
 vt100

Die Programmierer von screen weisen in ihrer Dokumentation ausdrücklich darauf hin, dass dieses Tool sich am besten mit vt100 versteht – überprüfen Sie das also am besten vorher. Mit screen können Sie bis zu zehn virtuelle Fenster in einem einzigen Xterm (oder auf der Konsole) simulieren. In all diesen Fenstern können Sie nun Programme laufen lassen – jedes der virtuellen Fenster ist dabei von den übrigen unabhängig. Tippen Sie einfach mal screen – nach einem kurzen Begrüßungstext gibt es den Hinweis, wie es weitergeht:

[Press Space or Return to end.]

Mit der Leertaste treten Sie also ein ins Reich der unendlichen Terminal-Weiten. Es stehen Ihnen eine Reihe von Kommandos zur Verfügung, die alle mit [Strg-a] beginnen: Halten Sie dazu die [Strg]- oder auf englischen Tastaturen die [Ctrl]-Taste gedrückt und tippen Sie [a]. Jetzt wartet das Programm auf die weiteren Befehlseingaben: [Strg-a] [?] gibt beispielsweise eine komplette Übersicht der Tastenbelegung (s. Tabelle 1).

Tabelle 1: Tastenkombinationen im <C>screen<C>

Tastaturkürzel Kommando Bedeutung
[Strg-a] [?] help Listet alle Tastenbelgungen auf.
[Strg-a] [c] screen Öffnet ein weiteres virtuelles Fenster.
[Strg-a] [Leertaste] next Wechselt zum nächsten Fenster, wiederholt man das Kommando, kann man durch alle Fenster "durchlaufen".
[Strg-a] [Strg-a] other Wechselt immer zwischen zwei Fenstern hin und her.
[Strg-a] [0...9] select n Wechselt zu Fenster mit Nr. n.
[Strg-a] [w] windows Zeigt in einer Zeile am unteren Rand für kurze Zeit, wieviel Fenster gestartet sind, das aktuelle wird mit * hervorgehoben.
[Strg-a] [a],[s] oder [q] meta/xoff/xon Sendet ein [Strg-a],[Strg-s] oder [Strg-q] direkt in das Fenster, braucht man für einige Programme (z. B. Emacs), die auch [Strg-a]-Kontrollsequenzen haben
[Strg-a] [x] lockscreen Sperrt den screen – nach einer gültigen Passworteingabe können Sie weiterarbeiten
[Strg-a] [H] log Loggt die Standardausgabe in eine Datei, abhängig von der Nummer des Fensters (1-10) heißt das Logfile screenlog.n, erneuter Aufruf von [Strg-a H] beendet das Mitschneiden
[Strg-a] [Esc] copy Wechselt in den Kopiermodus: Sollte keine Maus zum Markieren von Text vorhanden sein, kann man jetzt mit den Buchstaben h, j, k, l zur gewünschten Stelle auf dem Bildschirm gehen, eine Markierung mit der Leertaste setzen, dann zur nächsten Stelle gehen, wieder die Leertaste drücken, um in die "Zwischenablage" zu speichern. Mit [Strg-a] "]" (also [Strg-A] gefolgt von einer schließenden eckigen Klammer) fügt man den markierten Text übrigens ein, mit [Esc] bricht man die Aktion ab.
[Strg-a] [d] detach "Befreit" den screen, alle darin gestarteten Prozesse laufen weiter, aber das Programm verabschiedet sich vom Terminal: Nun kann man sich ausloggen. Mit screen -r kann der screen wieder aufgerufen werden (ausführliche Erklärung folgt im Text).
[Strg-a] [D] [D] pow_detach "Power Detach" – löst nicht nur den screen los, sondern loggt auch direkt aus dem Terminal aus.
[Strg-a] [K] kill Zerstört den ganzen screen – netterweise gibt es hier eine Sicherheitsabfrage: Really kill this window [y/n]

Out of the blue – screen!

Neben den ganzen Steuerungskommandos innerhalb der Fenster kann man das Programm natürlich auch mit verschiedenen Parametern beim Start versehen. Für den Fall, dass Sie screen mehrmals gestartet haben und nicht mehr wissen, wieviele und ob diese gerade aktiv sind, gibt es die Option -ls (steht für: -list):

huhn@asteroid:~$ screen -list
 There are screens on:
       1200.pts-10.asteroid    (Attached)
       1203.pts-14.asteroid    (Detached)

Hier sehen Sie einmal die Prozess-ID (pid), dann das virtuelle Terminal (tty), in dem der screen gestartet wurde, den Host (asteroid) und als letzte Information, ob er gerade aktiv ("attached") ist oder schlafen gelegt wurde ("detached"). Inaktive screens können mit screen -r [pid.tty.host] wiederbelebt werden. Die Angabe der Prozessnummer und des Terminals sind nur erforderlich, wenn mehrere screens inaktiv sind. Sie können sich die Sache wesentlich erleichtern, wenn Sie der Session direkt am Anfang einen Namen geben: screen -S petronella tauft Ihren screen auf den Namen "petronella". In der Übersicht heißt dieser dann: 1364.petronella – der Name ersetzt also Terminal und Host. Übrigens: Hat sich ein screen-Prozess einmal aufgehängt, können Sie diesen in der Übersicht am Statusflag "dead" erkennen. Sie werden ihn mit dem Parameter screen -wipe elegant los.

Wenn Sie einen schlafengelegten screen wiederbeleben, möchten Sie von Zeit zu Zeit zurückscrollen können, um die letzten Ausgaben laufender Programme zu betrachten. Standard für den Puffer sind 100 Zeilen. Dieses kann man mit Hilfe der Option -h zeilenanzahl ändern. Bei einem screen -h 1000 können Sie nun also 1000 Zeilen zurückgehen. Um sich in diesem Puffer zu bewegen, gibt es eine Reihe von Tastaturkommandos. Dazu begeben Sie sich zunächst in den Copy/Scrollback-Modus (s. Tabelle 1, [Strg-a] [Esc]). Wenn Sie den Editor vi bereits kennen und nutzen, sind Ihnen die Kommandos zur Cursor-Bewegung sicher vertraut. Andernfalls finden Sie in Tabelle 2 eine Kurzreferenz über die Befehle.

Tabelle 2: Die wichtigsten Kommandos zur Navigation im Copy/Scrollback-Modus

Kommando Bewegung
h, j, k, l bewegen den Cursor Zeile für Zeile oder Spalte für Spalte, links, rechts, rauf, runter.
0, $ zum äußersten linken oder rechten Ende der Zeile.
H, L, M bewegt den Cursor in der Spalte links außen nach ganz oben, nach ganz unten oder in die Mitte.
+, - Zeile hoch oder runter.
G springt ans Ende des Puffers.
g springt an den Anfang des Puffers.
w,b,e wortweise springen: zurück, vor und ans Wortende.

Mit <C>screen<C>, Charme und Melone

Sie können in Ihrem Home-Verzeichnis eine Datei .screenrc anlegen, in die Sie bestimmte Wünsche zum Programmverhalten eintragen. Tragen Sie zum Beispiel

startup_message off

ein, dann entfällt die Begrüßung beim Programmstart. Praktisch ist auch die Möglichkeit, sich eigene Kommandos zu definieren. Schreibt man in die .screenrc z. B.

bindkey ^f screen ssh marvin.cologne.de

(und nicht wie in der Man-Page beschrieben bind xy!), wird, wenn im screen-Fenster [Strg-f] gedrückt wird, automatisch ein neuer Screen mit einer ssh-Verbindung zum Rechner marvin.cologne.de aufgemacht. Auf diese Weise können Sie eine Menge nützlicher Aliase definieren. Möchten Sie als Standard-Puffer mehr als die 100 Zeilen haben, können Sie durch einen Eintrag

defscrollback 1000

eine eigene Puffer-Größe festlegen. Ein nettes Feature ist auch die sogenannte vbell_msg. Dazu muss als erstes definiert werden: vbell on, danach die gewünschte Meldung, die erscheinen soll, wenn ein Fenster einen "beep" ([Strg-g]) empfängt, z. B.

vbell_msg "Hallo! Hier piept's!"

Es gibt noch eine ganze Reihe von Tipps und Tricks zu diesem Thema in der sehr ausführlichen Man-Page. Es lohnt sich darüber hinaus, einen Blick in die Default-Konfigurationsdatei /etc/screenrc zu werfen. Wenn Sie noch mehr zum Thema lesen möchten, gibt es bei den meisten Distributionen ein sehr gut geschriebenes README und eine FAQ. Das Verzeichnis, in dem sich diese Dateien befinden, hängt von der Distribution ab. Für Red Hat ist es /usr/share/doc/screen-3.9.5/, für Debian /usr/doc/screen/ und für Mandrake /usr/doc/screen-3.9.5/.

(Tipp: Sie können diese Dateien, wenn sie die Endung .gz haben, also gzip-komprimiert sind, mit dem Programm zless lesen – dies ist z. B. bei Debian Linux der Fall.) Ansonsten gilt:

Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to screen@uni-erlangen.de

Glossar

Terminalemulation

Das Programm, das für die Bildschirmausgabe zuständig ist, tritt dem System gegenüber als ein Terminal auf. Die Linux-Konsole oder ein Xterm beispielsweise kennen bestimmte Steuersequenzen für Hervorhebung, Cursor-Positionierung etc. Teilweise sind diese echten Hardware-Terminals nachempfunden, z. B. denen vom Typ DEC vt100. Wenn die Umgebungsvariable TERM auf vt100 gesetzt ist, lässt sich das Programm so ansteuern wie ein vt100-Terminal.

Infos

[1] Die Homepage des GNU-Projektes screen ist http://www.gnu.org/software/screen/

[2] Eine schöne Sammlung von Informationen ist unter http://www.math.fu-berlin.de/~guckes/screen/ zu finden.

Der Autor

Heike Jurzik ist am Rechenzentrum der Universität Köln als Administratorin des lokalen News-Servers beschäftigt. Sie arbeitet seit 1996 auf Linux-Systemen. Und weil die Tastatur als Tasteninstrument ausreicht, spielt sie statt Klavier lieber Violine in einem Sinfonieorchester und liest bei Gelegenheit gern ein gutes Buch.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare