Diese Woche ist ein typisches Hilfsprogramm für Administratoren an der Reihe, es kann sich aber auch bei den verschiedensten anderen Aufgaben als sehr hilfreich erweisen: screen. Vereinfacht formuliert implementiert screen ein virtuelles Terminal. Aber was genau heisst das – und was ist der Nutzen davon?
Stellen Sie sich vor, Sie müssen sich von Zeit zu Zeit auf einem fremden Rechner via telnet oder ssh (Secure Shell) anmelden um dort einige administrative Aufgaben zu erledigen, etwa ein Backup starten oder einen C++ Quelltext kompilieren. Wäre es da nicht praktisch, wenn nach dem Verlassen des Fremdrechners alle Einstellungen der Sitzung und alle laufenden Programme erhalten bleiben, so dass Sie beim nächsten Login genau da weitermachen können, wo Sie aufgehört haben? Nun, genau das macht screen. Und noch vieles mehr. Beispielsweise kann screen mehrere Fenster im virtuellen Terminal öffnen, zwischen denen Sie umschalten können.
Um screen auf einem entfernten (oder auch auf dem eigenen) Rechner zu starten, genügt der Aufruf des Programmes:
screen
screen tut nun folgendes: es installiert ein neues virtuelles Terminal, startet eine Shell (z.B. bash) und übergibt die Kontrolle an diese Shell. Nach dem Start sehen Sie also nichts anderes als einen leeren Bildschirm mit einer Eingabeaufforderung («da bin ich, tu was…»). Sie können nun das tun, was Sie sonst auf einer Shell auch machen: Kommandos aufrufen, um Dateien zu kopieren, Programme zu editieren, um Prozesse zu starten und zu überwachen. Oder um mit write einen Spass zu machen… Sobald Sie fertig sind, können Sie das virtuelle Terminal mit der Tastenkombination Ctrl+d (Detach) verlassen und sich ggf. vom entfernten Rechner abmelden.
In der Zwischenzeit bleibt das Screen Terminal aktiv: dies schliesst alle Einstellungen, die Shell History und alle laufenden Prozesse (!) ein. Wenn Sie beispielweise einen Editor wie emacs starten und sich dann wie oben beschrieben vom Terminal abmelden, läuft der emacs Prozess weiter.
Sicher lautet nun die Frage: Wie komme ich wieder zu meinem Terminal? Ganz einfach durch die Eingabe des Kommandos:
screen -r
Nun sehen Sie die Ausgabe der letzten Kommandos, bevor Sie das Terminal das letzte Mal verliessen oder emacs, falls dieser vor dem letzten Detach aktiv war. Dies ist nun eine gute Gelegenheit, das screen Utility noch etwas genauer vorzustellen. screen kennt eine Myriade an Kommandos zur Steuerung des Terminals. Um einen Überblick zu erhalten, geben Sie folgendes ein: Ctrl+a ?.
Wie aus der Hilfsseite zu entnehmen ist, kann screen innerhalb eines Terminals mehrere «Fenster» öffnen zwischen denen dann mit verschiedenen Tastenkombinationen umgeschaltet werden kann. Das ist sehr praktisch, sobald mit mehreren Programmen im Terminal gleichzeitig gearbeitet werden muss: im ersten Fenster läuft emacs, im zweiten Fenster wird ein Quelltext kompiliert und im dritten Fenster läuft der Debugger! Ein Fenster teilt also alle Eigenschaften des Terminals: es speichert alle Einstellungen, die Bildschirmausgabe und es hält die Hand schützend über seine laufenden Kindprozesse.
Ein neues Fenster wird mit der Tastenkombination Ctrl+a c erzeugt. Sie können beliebig viele Fenster erstellen und in jedem Fenster Prozesse laufen lassen lassen. Um eine Übersicht über alle laufenden Fenster zu erhalten, geben Sie ein: Ctrl+a w. Am unteren Rand des Terminals werden nun alle aktiven Fenster mit dem jeweils aktiven Prozess angezeigt:
0-$ joe 1*$ bash 2$ bash
Um zwischen mehreren Fenstern hin- und herzuschalten gibt es natürlich mehrere Möglichkeiten. Die einfachsten sind die Kombinationen Ctrl+a n und Ctrl+a p für das nächste, resp. vorhergehende Fenster. Bei mehr als fünf Fenster macht das jedoch keine Freude mehr, deshalb kann mittels Ctrl+a nnn, wobei nnn für die Nummer des Fensters steht: 0 für das Erste, 1 für das Zweite, usw.
Ist es das, was screen kann? Im Prinzip nein… screen ist bietet eine Vielzahl an weiteren praktischen Funktionen, die den Rahmen dieser kurzen Einführung bei Weitem sprenen würden. Wie so oft sei deshalb auf die Manpage verwiesen, die nebst der Referenz eine gute Einführung enthält.
Pingback: Linux Tool der Woche: byobu « Benjamin Stocker-Zaugg