ubuntuusers.de » Wiki » Screen

Screen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Screen {en} ist ein Fenstermanager zur Verwendung mit textbasierten Eingabefenstern (Textkonsole). Hierbei ist es möglich, innerhalb eines einzigen Zugangs (zum Beispiel über ein Terminal oder eine Terminalemulation) verschiedene virtuelle Konsolensitzungen zu erzeugen und zu verwalten. Darüberhinaus können Sitzungen getrennt und später fortgeführt werden.

Ein Anwendungsbeispiel: Man meldet sich an seinem Server mittels SSH an und startet ein Programm. Beendet man nun die SSH-Sitzung wird auch das Programm beendet (auch wenn es noch läuft). Dies kann man nun über Screen am Laufen halten: Man meldet sich per SSH an, startet Screen, danach das gewünschte Programm, detached und kann sich abmelden. Im Hintergrund arbeitet dann das Programm weiter und man kann beim nächsten Anmelden die Sitzung mit dem Programm wieder aufnehmen.

Installation

Zuerst muss das Paket [1]

  • screen

installiert werden. Mit dem Befehl

screen 

in einem Terminal [2] lässt sich der Fenstermanager danach starten.

Bedienung

Allgemein

Nach dem Aufruf von Screen scheint es so, als ob nichts geschehen wäre. Das stimmt aber nicht, denn im Hintergrund läuft nun Screen zum Verwalten der Sitzungen. Man kann nun ganz normal weiter arbeiten und verschiedene Programme starten, wie man es gewohnt ist.

Wichtige Befehle

Die zwei wichtigsten Befehle besser gesagt Shortcuts die man kennen muss sind einmal:

Zum Erstellen einer neuen Sitzung: Strg + A + C

Und um zwischen den einzelnen Sitzungen umzuschalten: Strg + A +         

Eine Übersicht über alle Tastenkürzel bekommt man mit Strg + A, gefolgt von ?.

Eine Sitzung beendet man einfach, indem man die dort laufende Shell beendet, also entweder mit dem Befehl exit oder durch Drücken von Strg + D.

Weitere Befehle

Starten einer neuen Sitzung mit dem Namen "sitzung1":

screen -S sitzung1 

Löst (detached) die Verbindung zur aktuellen Sitzung: Strg + A + D

Nimmt die Sitzung mit dem Namen "sitzung1" wieder auf:

screen -r sitzung1 

Auflisten der Namen aller laufenden screen-Sitzungen:

screen -ls 

Löst (detached) die Verbindung zu einer laufenden Sitzung mit dem Namen "sitzung1" (Ist sehr hilfreich, wenn man z.B. die Verbindung per ssh verloren hat und deswegen die Session nicht lösen konnte.):

screen -d sitzung1 

Die Sitzung mit dem Namen "sitzung1" kann an mehreren Computern gleichzeitig angezeigt werden:

screen -rx sitzung1 

An die Sitzung mit dem Namen "sitzung1" einen Befehl senden und ausführen (\n für [ENTER]):

screen -S sitzung1 -X stuff $'ls -l\n' 

Visuelle Benachrichtigung umschalten (Flackern / Ton) (Wenn der Bildschirm manchmal flackert, sollte man diesen Befehl ausführen, bis links unten "switched to audible bell" steht.): Strg + A + G

Ausgabe scrollen

Um in der Ausgabe eines Screen-Fenster mit den bekannten Tastenkombinationen + Bild ↑ und + Bild ↓ zu scrollen trägt man die Zeile

termcapinfo xterm|xterms|xs|rxvt ti@:te@

in die Datei .screenrc im Heimatverzeichnis (welche eventuell noch angelegt werden muss) ein.

Falls das nicht funktioniert bleibt noch die Möglichkeit mit Strg + A + Esc in den copy-Modus zu wechseln und dort mit den Pfeiltasten oder Strg + U (halbes Fenster hoch), Strg + D (halbes Fenster runter), Strg + B (ganzes Fenster zurück), Strg + F (ganzes Fenster vorwärts) zu scrollen. Danach verlässt man den copy-Modus mit Esc oder Q.

Statuszeile einblenden

Wer viele virtuelle Terminals aufmacht verliert schnell den Überblick. Für eine bessere Übersicht lässt sich eine Statusleiste einblenden.

screen -X caption always "%{rw} * | %H * $LOGNAME | %{bw}%c %D |
%{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<" 

dabei stehen die verschiedenen Variablennamen für

$LOGNAME der Benutzername
$H der Hostname
%c die Uhrzeit im 24-Stunden-Format
%D der aktuelle Wochentag
%n Nummer des virtuellen Terminals
%f Flag; so zeigt das Sternchen das aktive virtuelle Terminal an, ein Minuszeichen die zuletzt besuchte Sitzung
%t der mit Strg + A, + A gesetzte Titel der Sitzung
%id` Backtick-Referenz, wobei id = 1,2,3 ...

Die Angaben in den geschweiften Klammern beschreiben u.a.die Farben. Die Angabe %50> sorgt dafür, dass Screen bei einer zu langen Fensterleiste die Ausgabe abschneidet, sodass die Angabe mittig erscheint. In der Screen-manpage finden sich weitere anwendbare Escapesequenzen (String escapes). Über Backticks lassen sich Rückgabewerte von Shellscripten, z. B. das Auslesen der IP-Adresse, in die Statuszeile einblenden.

Damit die Statusleiste dauerhaft erscheint ohne alles mühsam von Hand einzugeben, kann ein Eintrag in der Konfigurationsdatei systemweit unter /etc/screenrc oder für den Benutzer unter ~/.screenrc vorgenommen werden. In der Datei sollte dann folgender Eintrag hinzugefügt werden.

caption always "%{rw} * | %H * $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<"

Unter Umständen muss man für die Benutzereinstellung eine Kopie von /etc/screenrc nach ~/.screenrc kopieren.

Ein Backtick wird in der Form backtick id lifespan autorefresh cmd arg in die .screenrc eingetragen und über %id` in die caption-Zeile referenziert. Um die IP-Adresse in die caption-Zeile einzublenden müsste man folgendes Shellscript myip.sh zum Auslesen der IP-Adresse erstellen,

Shellscript zum Auslesen der IP-Adresse

1
2
3
#!/bin/sh
# unter einen ausführbaren Pfad als 'myip' abspeichern und ausführbar machen (chmod +x myip). 
ifconfig  | grep 'inet Adresse:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

unter /usr/local/bin kopieren und die .screenrc wie folgt anpassen

backtick 1 2 2 /usr/local/bin/myip
caption always "Meine IP-Adr.: %1`"

Automatischer Aufruf

Um den Aufruf von Screen beim Logon zu automatisieren (evtl. nicht sinnvoll bei einem Desktop-System), kann die Datei .bashrc im Homeverzeichnis wie folgt erweitert werden [3]:

 if  [ -z $STY ] && [ $TERM != "screen" ]; then
   /usr/bin/screen -xRR;
 else
   /usr/bin/screen -X hardstatus alwayslastline '[%H] %Lw%=%u %d.%m.%y %c '
 fi

ssh-Screen

Mit den folgenden Erweiterung am Ende der Datei .bashrc oder der systemweiten /etc/bash.bashrc wird automatisch zu einer screen-Session verbunden, wenn die Verbindung per ssh erfolgt. Bestehende Verbindungen zu der Session werden ggf. gelöst.

if [ "$TERM" != "screen" ] && [ "$SSH_CONNECTION" != "" ]; then
   /usr/bin/screen -S sshscreen -d -R && exit
fi

Wird der Screen beendet oder detached, wird auch die ssh-Verbindung getrennt, also ist so auch nur eine ssh-Verbindung möglich. Das kann verhindert werden, wenn man && exit weglässt.

Serielle Konsole

Screen kann auch verwendet werden, um sich über Nullmodem-Kabel mit einer seriellen Konsole zu verbinden. Für eine Verbindung mit 38400 Baud lautet der Befehl:

screen /dev/ttyS0 38400 

Screen-Profiles

Um die Screen-Profile in Ubuntu 9.10 zu benutzen, müssen folgende Pakete installiert werden:

  • screen-profiles

  • screen-profiles-extras

Nach Aufruf von "byobu" erscheint eine erweiterte Screen-Session. Hier sind alle gewohnten Tastenkombinationen möglich, des weiteren existiert ein Menü zur Konfiguration (F9). Hier kann unter anderem das Startverhalten von Screen festgelegt werden. Somit kann Screen als Default-Shell genutzt werden.

Diese Revision wurde am 15. August 2010 um 09:08 Uhr von cornix erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Shell, Fenstermanager

Passwort vergessen?