screen ist ein nettes Tool, um mit mehreren Personen gemeinsam auf einem Bildschirm (engl. "screen") zu arbeiten, genauergesagt in einem Terminal(xterm oder Konsole spielt keine Rolle). Man kann so z.B. jemand beim Konfigurieren zuschauen (oder jemand zuschauen lassen, wie man etwas konfiguriert).

Auch sehr praktisch ist screen für unzuverlässige Verbindungen, z.B. per Interneteinwahl oder Wireless-LAN: bricht die Verbindung zum ferngewarteten Server ab, dann wählt man sich einfach wieder neu ein und schaltet sich erneut auf screen auf - die Bildschirminhalte sind dann genauso wie vor dem Abbruch!

Siehe auch: twin

Vorgehensweise

Die wichtigsten Screen-Kommandos

Kombination

Kommando

Beschreibung

Strg-a ?

help

Zeigt den eingebauten Hilfebildschirm

Strg-a 0

select

Schaltet zum Bildschirm 0

...

select

...

Strg-a 9

select

Schaltet um auf Bildschirm 9

Strg-a A

title

Erlaubt dem User, dem aktuellen Bildschirm einen Namen zu geben.

Strg-a c

create

erzeugt einen neuen von Screen verwalteten Bildschirm

Strg-a d

detach

Beendet den screen prozess, der die Session und das Terminal verbindet

Strg-a n

next

Schaltet zum Bildschirm mit der nächsthöheren Nummer

Strg-a p

previous

Schaltet zum Bildschirm mit der nächstniedrigeren Nummer

Strg-a x

lockscreen

Sperrt die Konsole, bis das Passwort des Benutzers eingegeben wurde

Strg-a <Leertaste>

next

Alternative zu n; u.U. handlicher zu bedienen

Strg-a "

windowlist -b

Listet alle Fenster der aktuellen Session

Fragen & Antworten

Gibt es ein einfaches screen-Frontend?

Antwort: Ja es gibt einen screen session handler unter http://freshmeat.net/projects/screenie

Wie kann man screen so konfigurieren, dass man im Bildschirmpuffer mit Shift + !BildHoch/-Runter blättern kann?

Mit dem Eintrag termcapinfo xterm|xterms|xs|rxvt ti@:te@ kann man in einem xterm die Scrollfunktionen einigermaßen sinnvoll benutzen.

Mit Shift + !BildHoch/-Runter geht das meines Wissens nach nicht. Man kann aber den scrollback-Puffer benutzen, der durch Strg-a Esc aktiviert wird. Dann hat man u.a. folgende Möglichkeiten:

Mit Strg-a [ (wechseln in den copy-mode) und dann mir den Pfeiltasten geht's auch. Zurück geht's mit Strg-a ]

Hat jemand ein Beispiel für eine (gute) .screenrc ?

Die folgende Konfiguration gleicht die Bedienung von screen ein bisschen an gängige Terminalprogramme an (Tabs, Strg-Shift-T für neuen Tab, Strg-BildHoch/Runter / Alt-BildHoch/Runter / Alt-links/rechts zum Wechseln)

# Tabs
caption always "%{kw}%-w%{ky}%n %t%{-}%+w %=%{bw}@%H%{kw} %D %Y-%m-%d %c"
hardstatus string "[%H]"

# Ctrl-PageUp/Down or Alt-PageUp/Down or Alt-left/right
bindkey ^[[5;5~ prev
bindkey ^[[6;5~ next
bindkey ^[[5;3~ prev
bindkey ^[[6;3~ next
bindkey ^[[1;3D prev
bindkey ^[[1;3C next

# putty uses Ctrl-PageUp/Down by itself
# so only Alt-PageUp/Down and Alt-left/right
bindkey ^[^[[5~ prev
bindkey ^[^[[6~ next
bindkey ^[^[OD prev
bindkey ^[^[OC next

# Ctrl-Shift-T
bindkey ^T screen

# Scrollen im xterm
termcapinfo xterm|xterms|xs|rxvt ti@:te@

# Detach mit logout
bind d
bind d pow_detach
bind ^d pow_detach

Vorschlag: http://www.benedikt-wildenhain.de/.screenrc


Läuft screen bei irgendwem problemlos, d.h. mit Umlauten und Meta-Characters. Ich habe mit Emacs und CenterICQ Probleme.

Im Screen-Paket gibt es die Dateien

Die Datei screeninfo.src muß mit tic kompiliert werden: "tic screeninfo.src". Dadurch wird eine Datei ~/.terminfo/s/screen erzeugt. Die Datei screencap muß mit "cat screencap >> /etc/termcap" der terminal capability data base hinzugefügt werden. Danach kann man im screen "export TERM=screen" verwenden und alles ist super. -- JojoLechelt

Bei einem Resize wird die Darstellung zerstört. Was kann man machen?

Antwort: Du kannst Strg+L drücken, dann wird das aktuelle Programm neu "gezeichnet", vielleicht kann screen oder xterm das auch irgendwie automatisieren.

Wie Kann man mit screen über ein Nullmodem-Kabel auf einen anderen Rechner connecten. (screen bringt bei "screen /dev/ttyS0" immer einen dunklen Bildschirm) ?

Man kann screen nicht einfach ein Device als Parameter übergeben. Lösung wäre z.B., mit Minicom eine Verbindung zu dem entfernten Rechner herzustellen und dort screen zu starten. Wenn man auch lokale Screen-"Fenster" haben will, kann man entweder innerhalb von Screen ein Minicom starten - wenn man mehrere entfernte Shells haben will, muss man halt ppp oder slip nehmen und dann ssh (u.U. mit -C fuer Komprimierung) über die Verbindung machen.

Kann ich von einem Screen aus einem anderen Screen einen Befehl Keystroke senden?

Antwort: Das ganze funktioniert mit Strg-A a (das sendet Strg-a) an den 2. Screen. Zu der Unübersichtlichkeit: das stimmt, aber es ist leider ab und zu mal notwendig, in einem Screen einen weiteren Screen zu starten - z.B. auf einem Remoterechner ein schon laufender...

Man kann den zweiten screen auch mit "-e" starten, damit er eine andere Tastenkombination als Strg-A als Hotkey verwendet. Ich benutze für so etwas gerne "screen -e ^yy", damit ist Strg-Y der Hotkey, und Strg-Y y sendet ein Strg-Y. (Würde man das zweite y weglassen, müßte man Strg-Y a tippen, um ein Strg-Y zu bekommen, was ich eher unlogisch finde.)

Wie kann man mittels screen eine multisession auf einem Terminal machen?

Antwort: screen -x <window> erlaubt es einem User, auf ein anderes Terminals (screen), das er selbst gestartet hat, zuzugreifen. Beide Terminals zeigen immer das gleiche, das heißt, der Benutzer sieht auf dem einen Terminal, wenn er auf dem anderen Terminal etwas schreibt und umgekehrt.

Es ist ohne aktivierten Mehrbenutzerbetrieb nicht möglich, mit screen -x an einer Sitzung eines anderen Benutzers teilzunehmen.

Wie kann man mittels screen mehrere Benutzer auf eine Sitzung zugreifen lassen?

Antwort: Ein Benutzer <nutzername1> startet "screen" und gelangt mit Strg-A in den Kommandomodus und mit ":" in die Befehlszeile. Er aktiviert den Mehrbenutzerbetrieb mit "multiuser on". Danach kann er mit Strg-A : acladd <nutzername2> beliebig viele Benutzer berechtigen, den screen zu sehen.

Der zweite Nutzer kann an der Sitzung mit "screen -x <nutzername1>/" teilnehmen.

Ich suche eine Seite, die sich mit "digraph" befasst (Strg-A Strg-V) Speziell geht es mir um das EUR Symbol

Antwort: Strg-A Strg-V Eu (/DiGraph)

Ist es möglich Screen automatisch als Daemon zu starten, und in dem dann 2 Session mit jeweils einen Programm zu starten?

Antwort: "screen -dmS screenname befehl" erzeugt eine Screensitzung mit einem beliebigen Befehl im Hintergrund. Nun kann man jederzeit mit "screen -r screenname" auf die erstellte Sitzung zugreifen. "screen -ls" zeigt dabei eine Liste von bereits erstellten Sitzungen.

Wie kann man Screen automatisch beim Login starten?

z.B. mit diesem Eintrag in der .bashrc

if [[ $TERM != 'screen' && $TERM != 'dumb' ]] ; then
        if [[ `screen -list | grep -v "No" | awk '$2 { print }' | wc -l` == 0 ]] ; then
                screen
        else
                screen -rx
        fi
fi

Beispiel für Remote-Batchbetrieb

Es soll auf einem Server ein lange laufendes Programm gestartet werden. Es soll aber nicht die ganze Zeit eine SSH-Verbindung offen bleiben.

# In einem Boot-Script:
screen -dmS long-runner

Damit ist die Screen-Session gestartet, jedoch noch keinem Terminal zugeordnet.

Öffnen einer SSH-Sitzung. Dort wird auf screen aufgeschaltet:

screen -S long-runner -x

Jetzt ist man in der screen-Sitzung und kann den Dauerläufer starten. Mit C-ad gibt man die Session wieder ab und kann die SSH-Verbindung trennen. Das kann man beliebig wiederholen, um die Ausgaben in screen zu beobachten.

Will man nur ein Kommando in der screen-Sitzung absetzen und ist an der Ausgabe nicht interessiert, so geht folgendes Kommando:

screen -S long-runner -X exec /usr/local/bin/my_batch

Dies kann z.B. mittels rexec, ssh <server> CMD oder ähnlichem abgesetzt werden. Eine weitere Variante ist, dies mittels PHP/Perl/Ruby... von Webseiten aus zu aktivieren.

http://www.tutorials.de/forum/linux-tutorials/151906-einfuehrung-screen.html

screen (zuletzt geändert am 2010-11-16 10:25:07 durch p5B27867A)