Spass mit Screen

screen ist ein hilfreiches Programm, mit dem du innerhalb einer Terminal-Sitzung mehrere virtuelle Terminals nutzen kannst. Beispielsweise musst du also nur eine ssh-Sitzung eröffnen und kannst trotzdem entfernte Programme auf mehreren Konsolen gleichzeitig ausführen.

Besonders angenehm ist es auch, in einer screen-Sitzung auf einem entfernten Rechner ein langwieriges Programm zu starten (z.B. einen schönen neuen Kernel kompilieren), da du zwischenzeitlich die screen-Konsole abhängen und die Netzwerkverbindung trennnen kannst. Später kannst du dich einfach wieder in die alte Sitzung einhängen.

es geht los

screen

einmalig starten, dann ist man in der Matrix, ansonsten geht auch:

screen vi DATEI

dies öffnet einen vi innerhalb der neuen Matrix

Falls dich der Start-Info-Bildschirm stört, dann kannst du ihn per Option startup_message in der /etc/screenrc unterdrücken.

Um der Sitzung einen Namen zu geben, kann der Parameter -S sitzungsname verwendet werden. Dies gilt sowohl für die Erzeugung, als auch für einen späteren Zugriff auf die Sitzung.

Tastenkombinationen

"Ctrl-a" gibt dir die Macht über die Konsolen ...

C-a ?
zeigt wichtige Kürzel
C-a c
öffnet ein neues Fenster
C-a w
zeigt alle offenen Fenster
C-a 0
springt zum ersten Fenster, 1 zum zweiten usw.
C-a space
schaltet die Fenster einzeln durch
C-a A
benennt das aktuelle Fenster um
C-a a
schaltet zwischen zwei Fenstern hin und her
C-a h

schreibt den aktuellen Bildschirminhalt in hardcopy.N

C-a H

beginnt/beendet das Protokollieren in die Datei screenlog.N

C-a C-k
schließt das aktuelle Fenster
C-a ESC
Scroll-Modus: mit den Cursortasten kannst du dich nun beliebig in der Terminal-History bewegen; zweimal ESC beendet diesen Modus

Ausklinken aus einer screen-Sitzung

C-a d
detach, trennt dich von der Matrix (sie läuft im Hintergrund weiter)
C-d

(EOF - gleichbedeutend mit exit) - die aktuelle Shell wird geschlossen und damit auch das aktuelle Fenster - mit dem Schließen des letzten Fensters wird screen beendet

Einhängen in eine alte Sitzung

screen -r

klappt, falls du dich per detach freiwillig aus der Sitzung ausgehängt hast

screen -x
damit hängst du dich in eine laufende Sitzung (falls die Netzwerkverbindung zwischendurch unterbrochen wurde oder du gleichzeitig mit anderen Menschen im selben Fenster arbeiten willst)
screen -d -r

trennt eine screen-Sitzung von ihrer ursprünglichen Konsole und verbindet sie anschließend mit der aktuellen Konsole

Einschleusen von Tastatureingaben

screen [-S screenname] -X readbuf [DATEI]

liest den Inhalt von DATEI (Standard: /tmp/screen-exchange) in den internen Zwischenspeicher der screen-Sitzung

screen [-S screenname] -X paste \.

sendet den Inhalt dieses Zwischenspeichers in das aktuelle Fenster der screen-Sitzung (eigentlich ist es nur paste ., allerdings führt die bash ohne backslash eine Substitution durch)

Beispielskript

das folgende Skript sendet seine Parameter als Zeichen in das screen-Sitzung (diese kann mit -S screenname gewählt werden)

TMP_FILE=/tmp/screen-exchange-$$
[ "$1"  = "-S" ] && shift && SC_OPTS="$SC_OPTS -S $1" && shift
echo -en "$@" > "$TMP_FILE"
screen $SC_OPTS -X readbuf "$TMP_FILE"
screen $SC_OPTS -X paste \.
rm "$TMP_FILE"

Automatisiertes Öffnen mehrerer Programme

Folgende Datei ist ausführbar und startet mehrere Fenster mit verschiedenen Programmen:

 #!/usr/bin/screen -c

setenv FOO "bar"

# Teile den Bildschirm horizontal in zwei Bereiche
split

screen -t "dmesg" 0 bash

focus down
screen -t "top" 1 top

focus up

ScreenMatrix (last edited 2014-04-20 14:39:14 by anonymous)


Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.