GNU screen (screen)

GNU Screen ist ein "Fenster"manager auf der Textkonsole (shell). Somit kann man z.B. mit einer einzigen SSH-Sitzung verschiedene virtuelle Konsolensitzungen erzeugen und auch verwalten. Darüber hinaus können screen-Sitzungen in den Hintergrund geschoben (detach) und später fortgeführt (reattach) werden. man kann sich also vom System abmelden, ohne das der Prozess, der in der screen-Session läuft beendet wird. Somit muß man nun z.B. bei einen längern Kompliervorgang nicht die ganze Zeit über verbunden sein. Auch "holprige" SSH-Sitzungen verlieren damit ihren Schrecken.

Die erste Version von Screen wurde 1987 von Oliver Laumann an der TU Berlin entwickelt und zwischen 1993 und 2003 von Jürgen Weigert und Michael Schröder an der Uni Erlangen übernommen und seitdem von dort aus gewartet.

Konvention

Mit der Zeichenfolge ^a ist die Tastenkombination Strg + A gemeint, also das gleichzeitige Drücken der beiden Tasten auf der Tastatur.
Mit der Zeichenfolge ^a+n (klein n) ist das geleichzeitige Drücken von Strg + A mit anschließenden drücken der Taste N gemeint,
^a+N (groß n) ist entsprechend die Tastenkombination Strg + A und anschließend + N.

Konfigurationsdateien

Es gibt die globale Konfigurationsdatei /etc/screenrc und die jeweils eigene .screenrc im eigenen Homeverzeichnis.
In diesen Dateien kann man das Verhalten von screen anpassen.

Die wichtigsten Kommandozeilenaufruf
  1. screen
  2. screen -rd
  3. screen -D
  4. screen -S sessionname
  5. screen -ls
  6. screen -s absoluter pfad zur Shell
  7. screen -x
screen
Startet eine screen-Session mit einem Standardnamen.
screen -rd [sessionname]
Startet keine screen-Session, sondern verbindet (reattach) auf eine laufende screen-Session.
Laufende Verbindungen auf diese screen-Session werden dadurch abgehängt!
Gibt es mehrere laufende Sessions, muß man den Sessionnamen mit vorangestellter pid angeben. Siehe Ausgabe von screen -ls!
screen -D [pid.sessionname]
Startet keine screen-Session, sondern hängt die laufende Session sessionname mit PID pid ab!
screen -S sessionname
Ereugt eine neue Session und benennt diese sessionname.
Dieser Name kann dann für screen -ls oder screen -r verwendet werden.
screen -ls
Startet keine screen-Session, sondern erzeugt eine Liste aller Sessions.
Der Status "attached" bedeutet, das die Session aktiv mit einer screen-Sitzung verbunden ist.
Der Status "detachet" bedeutet, das die Session mit keiner Session verbunden ist. Eine verbindung kann man mit screen -r erstellen.
Der Status "multi" bedeudet, das die Session im Multiusermodus läuft. Hier können meherer User an ein und der selben Session teilnehmen. Alle sind gleichsam schreibberechtigt. Perfekt für eine "überwachte" Wartungssitzung!
Der Status "unreachable" bedeutet, das die Session nicht erreichbar oder "dead" (tot) ist.
Tote Sessions kann man mit screen -wipe entgültig löschen!
Beispiel:
tux@linux:~$ screen -ls
There are screens on:
        1883.screenA (Detached)
        1887.screenB (Attached)
        1883.screenC (Detached)
3 Sockets in /var/run/screen/S-tux.

tux@linux:~$
screen -s absoluter pfad zur Shell
Startet eine screen-Session mit der angegebenen Shell. Ansonsten wird die Shell, die in der Umgebungsvariablen $SHELL steht, bzw. /bin/sh wenn nichts definiert ist, gestartet.
Beispiel:
tux@linux:~$ screen -s /bin/csh
screen -x
Startet keine neue screen-Session, sondern verbindet mit einer anderswo schon verbunden Session. Diese Session läuft nun im "Multi"user-Modus.
Die wichtigsten screen Kommandos
TastenkombinationBedeutung
^a+cÖffnet einen neues Screen-Fenster und wechselt zu diesem (c wie create)
^a+CLöscht den screen-Fensterinhalt (C wie clear)
^a+dHängt die Session ab, beendet sie aber nicht (d wie detach)
^a+DDHängt die Shell ab und loggt den User aus (c wie create)
^a+hSchreibt eine Hardcopy des aktuellen screeninhalts in die Datei hardcopy.n (h wie hardcopy) n steht für die aktuelle Fensternummer
^a+HSchreibt eine history in die Datei ScreenLog.n (n steht für die aktuelle Fensternummer) bis zum erneuten drücken von ^a+H
^a+iZeigt Informationen über das aktuelle screen-Fenster an (i wie info)
^a+kZerstört sofort alle screen-sessions (k wie kill)
^a+QLöscht alle unterteilten screen-Bereiche bis auf den aktuellen
^a+SUnterteilt das aktuelle screen-Fenster in zwei neue "screen-Bereiche (regions)" untereinander(s wie splitt)
^a+tZeigt Systeminfos an
^a+vZeigt Versionsinfos an (v wie version)
^a+wErstellt eine Liste aller Fenster an (w wie window)
^a+xSperrt das screen-Fenter (Entsperrung nur mit eigenem Passwort!)
^a+XLöscht und schließt den aktuelle screen-Bereich
^a+ESCAktiviert den scrollback modus (Ein Rollen mit Bild ↑ / Bild ↓ ist nun möglich)
^a+|Unterteilt das aktuelle screen-Fenster in zwei neue "screen-Bereiche (regions)" nebeneinander

Praxis-Tipp
Durch den folgenden Eintrag an das Ende der ~/.bashrc kann man dafür sorgen, das wenn sich der Benutzer via ssh anmeldet immer automatisch eine screen-Session mit dem Namen sshscreen startet!
if [ "$TERM" != "screen" ] && [ "$SSH_CONNECTION" != "" ]; then
/usr/bin/screen -S sshscreen -d -R && exit
fi

Haben Sie noch weiter Fragen?

Kontaktieren Sie mich unter:


info@bohnsack-it.de