Berny's Knowledgebase als Newsfeed

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)