Was ist screen?
GNU screen ist ein Fenstermanager für textbasierte
Eingabefenster. Er erlaubt es mit einem einzigen Zugang
verschiedene virtuelle Konsolensitzungen zu erstellen und zu
verwalten.
Wofür wird screen gebraucht?
Häufig wird screen dort verwendet, wo keine grafische Oberfläche
vorhanden ist, z.B. auf Servern. So ermöglicht er es, über einen
einzigen Zugang (ein Terminal, Terminalemulator) mehrere Programme
zu verwalten. Typische Beispiele hierfür sind Texteditoren, Mail-,
IM-, und IRC-Clients.
Aber auch auf normalen Desktopsystemen bringt screen einige
Vorteile mit sich, so ist es möglich Programme ohne sichtbares
Fenster im Hintergrund laufen zu lassen, sich zwischendurch
auszuloggen, den X-Server neuzustarten, und die Programme dann ganz
einfach wieder in den Vordergrund zu holen.
Wie funktioniert's?
Zunächst stellen wir sicher, dass screen installiert ist. Sollte
das nicht der Fall sein, so können wir uns entweder vertrauensvoll
an unseren Paketmanager wenden, oder die Sourcen von der o.g. Seite
herunterladen und kompilieren.
Ist das erledigt, starten wir screen. Hierfür gibt es zwei
Möglichkeiten:
Die erste ist ein einfaches Ausführen des Befehls screen in
einem Terminal oder Terminalemulator wie der KDE-Konsole. Dann
startet screen eine Sitzung mit der Standardshell.
Die zweite Möglichkeit erlaubt es, ein Programm direkt in screen
aufzurufen. Wollen wir beispielsweise vim in screen starten, so
tippen wir screen vim.
Soweit ist alles wie gewohnt und wir können das Programm ganz
normal benutzen.
Ein kurzer Einschub - die Escapesequenz
Da eine Möglichkeit benötigt wird, um Befehle, die der Steuerung
von screen dienen von denen, die an die Programme die in screen
laufen zu unterscheiden, existiert eine sog. Escapesequenz.
Defaultmäßig ist dies bei screen die Tastenkombination
Strg-a, diese müssen wir vor jedem Kommando, das für screen
bestimmt ist, drücken.
Weitere Sitzungen
Wir befinden uns wieder am Anfang in einer geöffneten
screen-Sitzung. Nun genügt ein einfaches Strg-a c um ein
neues Fenster mit der Standardshell zu erstellen ("create"). Auch
in dieser können wir wie gewohnt arbeiten und Programme starten. Um
direkt ein anderes Programm als die Shell im neuen Fenster zu
öffnen, drücken wir Strg-a : und tippen dann screen
Kommando. Wollen wir nun zurück zum ersten Fenster, so drücken
wir Strg-a p ("previous"). In die andere Richtung, also
"vorwärts" können wir natürlich auch gehen, dies geschieht mittels
Strg-a n ("next") bzw. Strg-a Leertaste. Übrigens:
screen verwaltet die Fenster praktisch "kreisförmig", d.h. ein
Strg-a n im letzten Fenster schickt uns wieder zurück zum
ersten.
Da uns 2 Fenster aber nicht reichen, öffnen wir mit Strg-a c
immer weitere Fenster und würden so recht schnell den Überblick
verlieren. Glücklicherweise bietet screen eine Übersichtsseite mit
allen geöffnete Fenstern, die wir uns mit Strg-a " anzeigen
lassen können. Dort lassen sich einzelne Fenster bequem mit Hilfe
der Pfeiltasten und der Eingabetaste selektieren. Die Nummern vor
den Einträgen erfüllen selbstverständlich auch einen Zweck -
Strg-a Ziffer springt zum Fenster mit der entsprechen
Nummer, also in unserem Falle beispielsweise Strg-a 1 zum
zweiten Fenster, das wir geöffnet haben (die Nummerierung beginnt
bei 0). Schließen lässt sich ein Fenster am einfachsten, indem man
das darin laufende Programm beendet.
screen advanced
Was ist nun aber, wenn man die gesamte screen-Sitzung zwar nicht
schließen, aber ebensowenig störend im Terminalfenster laufen
lassen will? Abhilfe schafft hier das sog. "detachen" (ablösen) der
Sitzung. Alles was wir dazu tun müssen, ist ein einfaches Strg-a
d. Jetzt können wir uns problemlos ausloggen, während unsere
Programme im Hintergrund weiterlaufen. Screen stört sich im Übrigen
auch nicht daran, wenn wir das Konsolenfenster direkt schließen,
ohne vorher die Sitzung zu detachen.
Wenn wir nun in unserer screen-Sitzung weiterarbeiten wollen, so
öffnen wir wieder ein Konsolenfenster und geben den Befehl
screen -r ein. Dies "attached" die vorhandene Sitzung
wieder. Diese Methode funktioniert jedoch nur, solange wir eine
einzige Instanz von screen laufen haben. Sobald es mehrere sind,
muss die gewünschte Sitzungs-ID mit angegeben werden. Eine
Übersicht über alle laufenden screens bekommt man mittels screen
-ls, die Ausgabe sieht dann z.B. so aus:
There are screens on:Der komplette Befehl lautet in diesem Fall dann screen -r 20057.pts-5.localhost oder verkürzt screen -r 20057.
20057.pts-5.localhost (13.08.2008 22:58:47) (Detached)
19639.pts-0.localhost (13.08.2008 22:17:56) (Attached)