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