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
screen vi file.txt
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.
Kombination | Bedeutung |
---|---|
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 | |
C-a ESC | Scroll-Modus: mit den Cursortasten kannst du dich nun beliebig in der Terminal-History bewegen; zweimal ESC beendet diesen Modus |
Kombination | Bedeutung |
---|---|
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 |
screen -r
klappt, falls du dich per detach
freiwillig aus der Sitzung ausgehängt hastscreen -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 Konsolescreen [-S screenname] -X readbuf [DATEI]
liest den Inhalt von DATEI (Standard: /tmp/screen-exchange
) in den internen Zwischenspeicher der screen-Sitzungscreen [-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)-S screenname
gewählt werden):#!/bin/sh 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"
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