Berny’s Knowledgebase > Betriebssysteme > Linux > screen
screen ist ein sehr nützliches Tool für alle, die unter Linux viel auf der Shell arbeiten.
Es bietet eine oder mehrere virtuelle Konsolen (ich nenne sie der Einfachkeit halber im folgenden "Tabs", weil das Konzept vom FireFox her jedem bekannt sein dürfte und weil sie genauso funktionieren) in einer einzigen Terminal-Session. Man kann sich zwischendurch von Screen "detachen", alle laufenden Programme arbeiten aber im Screen weiter. Später kann man sich wieder "attachen", ggf. auch von einer ganz anderen Workstation aus. Für viele Anwendungen sehr sehr hilfreich, z. B. länger laufende Downloads, Chat-Fenster, man hat kein Problem wenn die z. B. über UMTS oder WLAN aufgebaute SSH-Verbindung mal abbricht, usw.
Grundlagen
starten mit
screen
Im screen startet - sofern nichts anderes angegeben - eine neue Standard-Shell, meist wohl also bash.
Alle Tasteneingaben gehen erst mal an die Shell bzw. das Programm im jeweils aktiven Tab. Wenn man irgendeinen Befehl an screen selber schicken will, leitet man das ein mit der Tastenkombination ctrl-a
Sobald die im letzten verbliebenen Tab laufende Anwendung bzw. Shell beendet wird, beendet sich auch screen. Im Zweifelsfall also alle Shells mit "exit" schliessen.
Die wichtigsten Tastenkombinationen
Tastenkombination | Aktion |
---|---|
ctrl-a ctrl-c |
neuen Tab öffnen |
ctrl-a n |
zum nächsten Tab wechseln |
ctrl-a p |
zum vorherigen Tab wechseln |
ctrl-a 0 |
zum Tab 0 wechseln |
ctrl-a 1 |
zum Tab 1 wechseln |
… |
… |
ctrl-a d |
detach (Sitzung unbeobachtet weiterlaufen lassen), siehe oben |
Um sich später wieder an die laufende Session zu "attachen"
screen -R
shared screen
Es gibt auch die Möglichkeit, dass zwei Leute sich an einem gemeinsamen screen "attachen". Jeder kann tippen und der andere sieht das live. Optimal um jemandem etwas an der Konsole zu zeigen, ohne dass beide am gleichen Ort sein müssen.
Beide müssen eine Shell unter der gleichen User-ID auf dem gleichen Rechner laufen haben, z. B. per SSH
Der erste User startet einen Screen normal.
screen
Der zweite User schaltet sich mit
screen -x
auf die Session auf.
Der Einfachkeit halber sollte man sich in dem Fall nur einen einzigen Tab beschränken, da der Wechsel zu einem andern Tab von jedem User individuell gesteuert wird, d. h. wenn einer der User den Tab wechselt, gilt das nur für ihn, der andere muss den Wechsel zum anderen Tab selber vornehmen.
Vorsicht! Sobald einer von beiden die (letzte oder einzige) Shell beendet ("exit") endet die screen-Sitzung insgesamt, also auch für den anderen.
Wenn sich nur einer ausklinken will, einfach nur detach über ctrl-a d
Tastenkombinationen für Fortgeschrittene
Wenn man die wichtigsten Tastenkombinationen kennt und erste Erfahrungen mit dem Tool gesammelt hat, werden die etwas fortgeschrittenen Features interessant:
Tastenkombination | Aktion |
---|---|
ctrl-a ctrl-a |
zwischen zwei Fenstern wechseln (immer hin und her) |
ctrl-a " |
Fensterliste |
ctrl-a A |
Fenster umbenennen |
ctrl-a S |
split screen (horizontal) |
ctrl-a | |
split screen (vertikal) |
ctrl-a tab |
zum nächsten Fenster des split screen wechseln |
dort läuft zunächst noch nichts: ctrl-a ctrl-c um eine neue Shell da zu starten |
|
oder ctrl-a n usw. um dort zu einer anderen (schon laufenden) zu wechseln |
|
ctrl-a X |
split screen aus |
ctrl-a x |
Session sperren |
ctrl-a ESC oder ctrl-a [ |
Kopier-Modus (auch zum hochscrollen) |
ESC wieder abbrechen |
|
Anfang wählen - RETURN - Ende wählen - RETURN |
|
oder fuer rechteckigen Bereich: |
|
Anfang wählen - c - RETRUN - Ende wählen - C - RETURN |
|
ctrl-a ] |
einfügen (kommt auf STDIN) |
ctrl-a a |
einem in screen gestarteten Programm ein ctrl-a senden |
Statusleiste von Screen einrichten
Standardmässig lässt einen screen ziemlich im Dunkeln, z. B. darüber auf welchem Tab man sich befindet. Eine Statusleiste bringt hier Übersicht.
cp /etc/screenrc ~/.screenrc vi ~/.screenrc
hier dann einfügen
hardstatus on hardstatus alwayslastline # Tabs werden angezeigt, es gelten die Systemfarben, aktueller Tab invertiert # hardstatus string "%{=b}%-w%{=bru}%n %t%{-}%+w" # Blaue Statusleiste, aktueller Tab ist rot hinterlegt. Rechts Hostname sowie Datum und Uhrzeit. (mein Favorit) hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %d.%m.%y %c:%s " # Graue Statusleiste, links Hostname, Username sowie Uhrzeit und Wochentag. Danach kommen die Tabs, aktiver Tab weiß hinterlegt. # hardstatus string "%{rw} * | %H * $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<"
Bei den Zeilen beginnend mit "hardstatus string" sucht man sich die aus, die den eigenen Vorlieben am besten entspricht oder man bastelt sich eine komplett eigene.
Bell
Wenn ein Programm, das in einem Screen läuft einen "beep" von sich gibt, kann Screen unterschiedlich reagieren. Es kann entweder wirklich piepen (audible bell) oder es kann den ganzen Bildschim kurz invertieren (visible bell). Zwischen beiden Modi kann man hin und herschalten mit der Tastenkombination
ctrl-a ctrl-g
Welcher Modus beim Starten aktiv ist, kann man in der ~/.screenrc einstellen:
# visible bell vbell on # audible bell vbell off
Weiterführende Literatur
Für alle Fragen, die jetzt noch offen sind:
man screen
(sehr ausführlich)