Machen Sie der Konsole Ihre Aufwartung – anstelle vieler einzelner Terminals verwalten Sie alle wichtigen Kommandozeilenprogramme in nur einem Programmfenster. Wer mag, lädt andere Benutzer zu Besuch ein und schmückt das Fenster ansprechend.
Die Terminal-Applikationen unter KDE und Gnome machen es vor: Wie in einem Browser starten Sie verschiedene Reiter (Tabs) und verwalten so mehrere Konsolensitzungen in nur einem Programmfenster. Wer ganz ohne grafische Oberfläche oder auf einem entfernten Rechner per SSH arbeitet, muss auf diesen Komfort nicht verzichten: Das Tool Screen verwaltet mehrere virtuelle Terminals, erlaubt das Weiterlaufen von Prozessen, auch wenn Sie sich von entfernten Rechnern abmelden, und bietet sogar Funktionen, mit denen Sie die Konsolensitzung mit anderen Benutzern teilen.
Die Leiter anlegen
Sie starten das Programm von der Konsole aus über den Aufruf screen Der Splashscreen begrüßt Sie und verrät die Versionsnummer und dass es mit Druck auf die Leer- oder Eingabetaste weitergeht. Wer auf die nette Begrüßung verzichten möchte, schaltet sie durch einen Eintrag in der Screen-Konfigurationsdatei ab (siehe Abschnitt “Der richtige Fensterrahmen”, S. 96).
Nachdem Sie den Fensterzauber gestartet haben, verändert sich auf den ersten Blick eigentlich nichts – das Terminal sieht aus wie immer. Das Gefühl unter den Fingern verändert sich allerdings – spätestens dann, wenn Sie auf der Bash [Strg]+[A] tippen, um an den Anfang der Eingabe zu gelangen: In Screen ist diese Tastenkombination der Auftakt zu weiteren Kommandos, um das Programm zu bedienen.
Die Tabelle “Wichtige Screen-Kommandos” bietet eine Übersicht; über [Strg]+[A] und [Umschalt]+[ß] (“?”) blenden Sie die Onlinehilfe ein (Abbildung 1). Diese Befehlsreferenz verrät auch, dass Sie das “normale” Verhalten von [Strg]+[A] über Eingabe von [Strg]+[A],[A] erhalten. Die zweite Seite der Onlinehilfe erreichen Sie über einen Druck auf die Leertaste.

Strg+A und Umschalt+ß ("?") blenden Sie die Kurzübersicht der Befehle ein.” width=”300″ height=”193″ />
Strg+A und Umschalt+ß (“?”) blenden Sie die Kurzübersicht der Befehle ein.Wichtige Screen-Kommandos
| [Strg]+[A],[C] | Öffnet ein weiteres virtuelles Terminal. |
| [Strg]+[D] | Schließt ein virtuelles Terminal; handelt es sich um die einzige Sitzung im Screen, beendet die Tastenkombination das Programm. |
| [Strg]+[A],[N] (oder [Strg]+[A],Leertaste) | Wechselt ins nächste virtuelle Terminal. |
| [Strg]+[A],[0]–[9] | Springt zum ersten bis zehnten virtuellen Terminal. |
| [Strg]+[A],[W] | Blendet für einige Sekunden eine Statuszeile am unteren Fensterrand ein; der aktuelle Aufenthalt wird mit einem Sternchen gekennzeichnet. |
| [Strg]+[A],[Umschalt]+[A] | Erlaubt es, dem virtuellen Terminal einen Namen zu geben (standardmäßig heißen alle Sitzungen “bash”). |
| [Strg]+[A],[Umschalt]+[2] | Blendet eine Liste mit allen geöffneten Sitzungen ein; mit den Pfeiltasten blättern Sie zum gewünschten virtuellen Terminal, und mit Druck auf [Eingabe] öffnen Sie das entsprechende Fenster. |
| [Strg]+[A],[X] | Schließt das Fenster vor neugierigen Augen; zum Entsperren muss der Benutzer sein Passwort eingeben. |
| [Strg]+[A],[Esc] | Schaltet in den Kopier/Scrollmodus um: Mit den Pfeiltasten navigieren Sie. Um etwas in die Zwischenablage zu kopieren, gehen Sie an den Anfang des gewünschten Bereichs, drücken die Leertaste, navigieren zum Ende und drücken erneut die Leertaste. Über [Esc] brechen Sie den Vorgang ab. |
| [Strg]+[A],[AltGr]+[9] (“]”) | Fügt den kopierten Text ein. |
| [Strg]+[A],[D] | Verlegt Screen in den Hintergrund; Sie beenden nur das Programm selbst, d. h. alle im Screen laufenden Prozesse arbeiten weiter. |
| [Strg]+[A],[K] | Beendet das aktuelle virtuelle Terminal gewaltsam; sicherheitshalber fragt das Programm nach, ob Sie die Sitzung wirklich “abschießen” wollen. |
| [Strg]+[A],[AltGr]+[ß] (“\”) | Beendet Screen und alle darin laufenden Sitzungen gewaltsam; auch hier findet eine Sicherheitsabfrage statt (Really quit and kill all your windows [y/n]). |
Fenster auf oder zu?
Wie schon erwähnt, ist es möglich, Screen zu schließen, die darin gestarteten Prozesse aber weiterlaufen zu lassen. So verrichten die Programme brav weiter ihre Arbeit, und wenn Sie Screen zu einem späteren Zeitpunkt wiederbeleben, sehen Sie das getane Werk und die entsprechenden Ausgaben. Die Tastenkombination zum Ablösen lautet [Strg]+[A],[D]. Um zum Screen wieder Verbindung aufzunehmen, geben Sie auf der Konsole screen -r ein.
Ebenso ist es möglich, einen Screen remote zu “detachen”, also ihn in den Hintergrund zu befördern, ohne selbst drin zu stecken. Dazu tippen Sie screen -d.
Die beiden gezeigten Parameter dürfen Sie kombinieren – um einen laufenden Fensterzauber in einem Aufrutsch abzutrennen und in der aktuellen Konsole wiederzubeleben, geben Sie einfach screen -dr ein.
Laufen mehrere Screen-Sessions, müssen Sie Ihre Wünsche etwas genauer formulieren. Das Programm weist Sie selbst darauf hin, wenn etwas nicht klar ist. Wie Sie in Listing 1 sehen, verrät Screen praktischerweise auch gleich, was da im Hintergrund läuft und wie Sie gezielt eine Sitzung nach vorne holen. Um beispielsweise den zweiten Eintrag aus Listing 1 wiederzubeleben, tippen Sie:
screen -dr 9865.pts-11.xena
Eine ähnliche Ausgabe sehen Sie übrigens auch, wenn Sie screen -ls eingeben. Die Liste zeigt neben der Prozessnummer sowie den Namen des Terminals und des Computers auch an, ob der Screen gerade im Vordergrund (Attached) oder Hintergrund (Detached) läuft. Manchmal taucht ein Screen allerdings mit der Statusangabe Dead auf; ein solches Überbleibsel entfernen Sie schnell mit dem Befehl screen -wipe.
Listing 1
$ screen -dr
There are several suitable screens on:
9559.pts-11.xena (Detached)
9865.pts-11.xena (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Hinter dem Vorhang
Standardmäßig können Sie in Screen 100 Zeilen zurückblättern und so die Ausgaben von Programmen betrachten. Wer diesen Puffer vergrößern möchte, startet Screen mit dem Parameter -h und der Angabe der neuen Puffergröße. Das Kommando screen -h 1000 sorgt dafür, dass Sie im Kopier/Scrollmodus ([Strg]+[A],[Esc]) ganze 1000 Zeilen betrachten können. Um dieses Verhalten dauerhaft einzuschalten, schreiben Sie einen entsprechenden Eintrag in die Konfigurationsdatei des Programms (siehe Abschnitt “Der richtige Fensterrahmen”, S. 96).
Fensterputz
Wer viele verschiedene Sitzungen in Screen geöffnet hat, kann auf ein praktisches Feature zurückgreifen, um nicht die Übersicht zu verlieren: Die Tabelle “Wichtige Screen-Kommandos” verrät, dass Sie für kurze Zeit eine Statuszeile einblenden und den einzelnen Sitzungen Namen geben können. Um eine derartige Ansicht immer einzublenden, geben Sie bei laufendem Screen das Kommando
screen -X caption always
ein. Mit verschiedenen Escape-Sequenzen bringen Sie die Statuszeile dazu, weitere Infos, wie etwa Benutzer- und Rechnernamen, Datum und Uhrzeit – und das Ganze sogar in Farbe – anzuzeigen. Dazu setzen Sie hinter den schon gezeigten Aufruf (in doppelte Anführungszeichen eingeschlossen) eine Kombination aus Farbangaben und den Details, die Sie sehen wollen:
screen -X caption always "%{rw} ?
* %H * | $LOGNAME | %{bw}%c %D |?
%{-}%-Lw%{rw}%50>%{rW}%n%f* %t %?
{-}%+Lw%<"
Die Angaben in den geschweiften Klammern beschreiben die Farben, wie Rot auf Grauem Hintergrund (%{rw}), Blau auf Grau (%{bw}) oder Rot auf Weiß (%{rW}). Mit %{-} schalten Sie auf ein vorhergehendes Farbschema um – die Manpage liefert im Abschnitt STRING ESCAPES detaillierte Auflistungen. Die anderen Variablen lassen sich wie folgt aufschlüsseln:
$LOGNAME: Benutzername%H: Hostname%c: Uhrzeit im 24-Stunden-Format%D: Wochentag%n: Nummer des virtuellen Terminals%f: Flag; so zeigt das Sternchen das aktive virtuelle Terminal an, ein Minuszeichen die zuletzt besuchte Sitzung%t: der mit [Strg]+[A],[Umschalt]+[A] gesetzte Titel der Sitzung
Weiterhin sorgt die Angabe %50> dafür, dass Screen bei einer zu langen Fensterliste die Ausgabe so abschneidet, dass der folgende Bereich in etwa in der Mitte der Zeile zu sehen ist. Das Ergebnis des Fensterschmucks sehen Sie in Abbildung 2.
Aus dem Fenster gelehnt
Mit ein paar Handgriffen machen Sie Screen bereit für den Einsatz als Lernsoftware. Dazu passen Sie zunächst als Administrator die Zugriffsrechte für das Programm an. Anschließend startet ein Benutzer Screen und gibt diesen gezielt für andere User frei. Setzen Sie zunächst als Systemverwalter das s-Bit für das Screen-Binary:
sudo chmod +s /usr/bin/screen
Anschließend setzen Sie die Rechte für das Verzeichnis /var/run/screen neu und entziehen der Gruppe das Schreibrecht:
chmod g-w /var/run/screen
Der Benutzer, der sein Fenster nun für andere Besucher öffnen möchte, startet Screen und tippt [Strg]+[A],[Umschalt]+[.] (“:”). Am Prompt aktiviert er nun den Multiusermodus und gibt einen oder mehrere Benutzernamen der willkommenen Gäste ein:
: multiuser on : addacl petrosilie
Sollen gleich mehrere Einladungen zum Fensterln verschickt werden, darf man mehrere Benutzernamen (durch Kommas voneinander getrennt) eingeben.
Um den Gastgeber zu besuchen, startet ein zweiter Benutzer den Screen zusammen mit der Option -x und dem Namen des Gastgebers sowie der Prozessnummer des Screens: screen -x petronella/4552.
Der richtige Fensterrahmen
Sämtliche Einstellungen zum Programm nehmen Sie in der Datei ~/.screenrc im eigenen Home-Verzeichnis vor, die Sie mit einem Texteditor bearbeiten und anpassen. Standardmäßig ist diese Datei nicht vorhanden, so dass Sie diese erst neu anlegen müssen. Bei den meisten Distributionen befindet sich unter /etc/screenrc die systemweite Einrichtungsdatei, welche auch zahlreiche Kommentare und Beispiele auf Englisch enthält. Um diese Datei als Vorlage zu verwenden, kopieren Sie sie mit nur einem Aufruf ins eigene Zuhause:
cp /etc/screenc ~/.screenrc
In Listing 2 finden Sie eine beispielhafte Screen-Konfigurationsdatei mit deutschen Kommentaren.
Listing 2
# /etc/screenc ~/.screenrc
# ————————
# Abschalten des Splash-Screens bei Programmstart:
startup_message off
# Setzen des Puffers, z. B. auf 1000 Zeilen:
defscrollback 1000
# Blendet immer eine bunte Statuszeile mit Namen der
# Sitzungen, Datum, Uhrzeit usw. ein:
caption always "%{rw} * %H * | $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<"
# [Strg]+[F] startet ein neues virtuelles Terminal
# mit Namen "MAIL" und baut automatisch eine
# SSH-Verbindung zu "anderer.rechner.de" auf:
bindkey ^f screen -t MAIL ssh anderer.rechner.de
Glossar
-
s-Bit
-
Außer Lesen, Schreiben und Ausführen kennt Linux ein paar Spezialrechte. Das so genannte Setuid-/Setgid-Bit ersetzt für ausführbare Dateien für den Eigentümer oder die Gruppe das einfache Ausführrecht (x). Anschließend läuft das Programm immer mit den Rechten des Dateieigentümers oder der Gruppe – egal, wer es ausführt.





