Screen ist für mich eines der wichtigsten Konsolenprogramme. Verbindet man sich mit ssh zu einem Rechner, vermisst man schnell die Fähigkeit einer modernen grafischen Oberfläche zwischen verschiedenen Anwendungen und Fenstern einfach hin- und her zu wechseln. Und wie können ausgeführte Programme in der Konsole auch nach dem Logout weiterlaufen? Hier kommt screen ins Spiel.
Beim Start von screen erscheint eine Nachricht und danach scheint es als ob sich nicht viel geändert hätte. Lediglich die Eingabeaufforderung der Shell blinkt einem entgegen.
Hier lässt sich nun z.B. rtorrent starten und der Bildschirm horizontal mit Strg+A und S teilen. Mit Strg+A und TAB springt man zur nächsten Bildschirmregion und kann dort mit Strg+A und c eine neue Shell öffnen und z.B elinks starten. Dies würde dann meinem schon vorgestellten rtorrent Setup entsprechen und sieht wie folgt aus.
Screen lässt sich aber nicht nur horizontal sondern auch vertikal teilen. Um das rtorrent Fenster vertikal zu teilen und htop anzuzeigen, springt man einfach mit Strg+A und TAB in die obere Hälfte zurück. Dann genügt bei Debian und Ubuntu ein Strg+A und | um den Bildschirm erneut zu teilen.
Anschließend wird der Schritt zum Starten einer neuen Anwendung wiederholt, wiederum Strg+A und TAB um zur nächsten Region zu gelangen, Strg+A und c um die Shell zu öffnen und dann htop eingeben.
Das Spiel lässt sich nun beliebig weiter treiben. Mit Strg+A und d bietet screen eine seiner besten Optionen an, nämlich screen abzutrennen und in den Hintergrund zu schicken. Danach befindet man sich wieder auf der ursprünglichen Konsole, alle in screen ausgeführten Programme laufen aber weiter!
Man könnte sich also problemlos ausloggen, zu Bekannten fahren, von dort sich erneut zu seinem Rechner mit ssh verbinden und danach mit dem Kommando screen -r
seine Session wieder aufrufen.
Leider ist die Aufteilung der Anwendungen in verschiedene Regionen dann verschwunden und man müsste von neuem die Einteilung vornehmen. Natürlich lässt sich einfach mit Strg+A und SPACE zwischen den "Fenstern" wechseln. Oder man springt direkt zu einem Fenster indem man Strg+A und 0,1 oder 2 eingibt.
Wäre es nicht besser, man hätte eine Statusleiste, in der die unterschiedlichen Programme mit Namen und Fensterzahl schon angezeigt würden? Wäre es nicht praktischer die Anwendungen schon sofort beim Starten von screen mit auszuführen, ohne den Umweg über das Öffnen einer neuen shell zu gehen?
Der "Trick" ist die im Home Ordner versteckte Datei .screenrc zu erstellen, welche bei mir so aussieht.
hardstatus alwayslastline "%-w[%n %t]%+w%=%H %c Load: %l" shelltitle '...' startup_message off vbell off blankerprg /home/apo/.scripts/screensaver.sh idle 300 blanker #screen -t centerim 0 /home/apo/.scripts/centerim.sh #screen -t alpine 1 alpine -d 0 #screen -t mc 2 /home/apo/.scripts/mc.sh screen -t rtorrent 1 rtorrent screen -t htop 2 htop #screen -t wyrd 4 wyrd screen -t elinks 3 /home/apo/.scripts/elinks.sh #screen -t hnb 8 hnb screen -t slurm 4 slurm -i eth0
Aufmerksamen Lesern von KMandlas hervorragendem Linuxblog und Testern seiner Debian Lenny Sandbox Edition fällt hier sicher auf, dass es sich mit geringfügigen Änderungen um seine screenrc handelt. Sie ist übersichtlich und enthält meiner Meinung auch alles was man für die effiziente Benutzung von screen braucht.
Was macht diese Konfigurationsdatei? Zum einen verschwindet die Startnachricht, die man nicht wirklich benötigt. Die visuelle Rückmeldung, wenn sich etwas in den Fenstern getan hat, ist ebenfalls ausgeschaltet. Mit Shelltitle
lässt sich der Name einer mit Strg+A und c gestarteten shell festlegen.
Die Zeile blankerprg
verweist auf ein Bildschirmschoner-Skript, welches nach 5 Minuten ausgeführt wird, sollte man in der Zwischenzeit keine weiteren Aktionen in screen vorgenommen haben. Im Grunde genommen handelt es sich hier mehr um ein Gimmick, welches bei modernen Monitoren nicht notwendig ist. Ich stelle es ein anderes Mal ausführlicher vor.
Die restlichen Zeilen sind Programme, die ich regelmäßig in meiner Screen Session ausführe. Da ich nicht auf jedem Rechner immer die gleichen benötige, sind manche mit der # kommentiert. Der Aufbau ist simpel
screen -t Titel des Fensters Fensterzahl Name des Programms und Startparameter
Somit wird aus einem langweiligen Terminalfenster ein Fenstermanager für die Konsole. Zwischen den einzelnen Fenstern lässt sich danach wie gewohnt mit Strg+A und Space oder Strg+A und Fensterzahl wechseln.
Wer weitere Vorschläge für das Aussehen der Statuszeile bei screen sucht, findet schon bei Google mit dem Begriff hardstatus und screen viele weitere Ideen. Noch einfacher geht es, wenn man direkt byobu ausprobiert, was nichts anderes als ein verbessertes oder besser verschönertes screen ist.
Screen ist nicht nur für Serveradmins sinnvoll. Auch für alte Computer mit sehr wenig RAM bietet sich screen mit vielen nützlichen Konsolenprogrammen an, womit sich E-Mail schreiben, Browsen, Chatten, Bittorrent und vieles mehr realisieren lässt. Viel Spass beim Ausprobieren!