claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 08/2005   »   Ausgabe bestellen

Virtuelle Terminals mit screen

Terminal-Zauber

von Heike Jurzik


Auf ins Reich der unendlichen Terminal-Weiten -- mit dem Programm "screen" starten Sie ein Terminal im Terminal und verwalten mehrere Shell-Sitzungen in einem einzigen Fenster. Wie Sie damit effektiver auf der Kommandozeile arbeiten und auf einem entfernten Rechner Prozesse nach dem Logout weiterlaufen lassen, zeigt dieser Artikel.

KDEs Konsole macht es vor: Dank der Tabs nutzen Sie mehrere Terminal-Sitzungen in einem einzigen Fenster, wandern mit Tastaturkommandos von einer Shell zur nächsten und arbeiten so komfortabel auf der Kommandozeile (Abbildung 1).

Streikt die grafische Umgebung oder sitzen Sie an einem Rechner, auf dem dieses Programm nicht installiert ist, müssen Sie auf die "Fenster im Fenster" aber nicht verzichten: Das Programm screen verwaltet mehrere virtuelle Konsolen in einem Terminal.

Abb. 1: KDEs Konsole -- mehrere Shell-Sitzungen in einem Fenster.

Weiterhin können Sie sich mit SSH [1] auf entfernten Rechnern einloggen, in screen Prozesse starten und sich vom System abmelden -- die gestarteten Jobs laufen dabei im screen weiter. Wenn Sie sich später wieder anmelden, reaktivieren Sie einfach die screen-Sitzung und arbeiten weiter.

Grundlegendes

Starten Sie ein Terminal (z. B. über [Alt-F2] und Eingabe von konsole) und geben Sie den Befehl screenein. In einigen Versionen des Programmes erscheint an dieser Stelle ein Begrüßungsbildschirm mit Informationen zur Programmversion, den Sie mit [Eingabe] oder der Leertaste verlassen; bei anderen Versionen fehlt dieser.

Auf den ersten Blick hat sich nicht viel verändert; der screen sieht wie eine ganz normale Terminal-Sitzung aus. Auf den zweiten Blick ist jedoch vieles anders, vor allem die Tastaturkommandos sind etwas gewöhnungsbedürftig.

Die wichtigste Tastenkombination für die Arbeit mit screen ist [Strg-A] -- dieser Befehl bringt Sie nicht an den Anfang der Eingabe (wie in der Bash-Shell sonst üblich [2]), sondern ist der Auftakt für längere Tastenfolgen, über die Sie alle screen-Funktionen erreichen. Drücken Sie beispielsweise [Strg-A], [Umschalt-ß], blendet das Programm eine Online-Hilfe ein und zeigt eine Übersicht der Tastenkombination an (Abbildung 2). Die wichtigsten Befehle zeigt die Tabelle Tastaturkommandos in "screen".

Abb. 2: Alle "screen"-Kommandos fangen mit der Tastenkombination [Strg-A] an; [Strg-A], [Umschalt-ß] blendet eine Befehlsübersicht ein.

Jetzt kann es mit der Arbeit losgehen -- tippen Sie wie gewohnt am Prompt Ihre Befehle ein. Um ein weiteres virtuelles Terminal zu starten, geben Sie einfach [Strg-A], [C] ein und sehen wieder ein leeres Terminal, in dem Sie andere Shell-Programme starten können. Um zum ersten Fenster zurück zu wechseln, tippen Sie [Strg-A], [0] (das erste virtuelle Terminal trägt die Nummer 0), ins zweite Fenster kommen Sie entsprechend mit [Strg-A], [1] usw. -- mit der leichten Tastenkombination [Strg-A], [Strg-A] wechseln Sie zwischen den zwei zuletzt aktiven Terminals hin und her.

Tastaturkommandos in "screen"
[Strg-A], [C]Öffnet ein weiteres virtuelles Terminal im Screen.
[Strg-D]Schließt ein virtuelles screen-Terminal; ist nur noch ein einziges geöffnet, beendet [Strg-D] das Programm screen.
[Strg-A], [0] bis [9]Springt zum Fenster mit der entsprechenden Nummer; das erste Fenster trägt die Nummer 0, das zweite die 1 usw.
[Strg-A], [N]Wechselt ins nächste virtuelle Terminal.
[Strg-A], [P]Wechselt ins vorige virtuelle Terminal.
[Strg-A], [W]Blendet für ein paar Sekunden eine Statuszeile am unteren Fensterrand ein, welche die Anzahl der geöffneten Fenster (und deren Namen) anzeigt.
[Strg-A], [Umschalt-2]Blendet eine Liste der virtuellen Terminals ein; mit den Pfeiltasten navigieren Sie in der Liste, durch Druck auf [Eingabe] wechseln Sie zum Fenster unter der Markierung.
[Strg-A], [Umschalt-A]Erlaubt es, dem gerade aktiven virtuellen Terminal einen Namen zu geben ("Set window's title to:"); standardmäßig heißen alle Fenster "bash". Hier löschen Sie diesen Bezeichner und geben selbst einen Namen ein.
[Strg-A], [A]Sendet [Strg-A] an die Bash, um an den Anfang der Eingabe zu springen.
[Strg-A], [X]Funktion zum Sperren von screen; geben Sie auf Aufforderung (Key:) ein Passwort ein und wiederholen Sie dieses (Again:). Danach ist die Sitzung gesperrt, zum Freischalten geben Sie das eben gewählte Kennwort am Prompt Password: ein.
[Strg-A], [D]Detach (deutsch: "ablösen, abtrennen") -- Sie verlassen die screen-Sitzung, ohne die darin gestarteten Prozesse zu beenden.
[Strg-A], [K]Beendet den screen (und alle darin laufenden Prozesse); zur Sicherheit fragt das Programm nach "Really kill this window [y/n]", bevor es die screen-Session einfach aus dem Fenster fegt. Tippen Sie hier entweder y oder n.

Hinter- und vordergründig

Um screen in den Hintergrund zu schieben, tippen Sie [Strg-A], [D]; im Terminal erscheint dann der Hinweis [detached]. Sie können das Terminal-Programm (z. B. die KDE-Konsole oder ein Xterm) oder sogar KDE beenden -- solange Sie den Rechner nicht herunterfahren (oder den screen-Prozess abschießen), laufen screen und alle darin gestarteten Programme weiter. Das prüfen Sie leicht in der KDE-Systemüberwachung ([Alt-F2] und Eingabe von ksysguard) nach (Abbildung 3).

Abb. 3: Obwohl der "screen" über die Detach-Funktion verlassen wurde, laufen die Prozesse ("top" und "mutt") weiter.

Um die screen-Sitzung fortzusetzen, tippen Sie am Shell-Prompt:

screen -r

Wer screen vorher nicht durch [Strg-A], [D] verlassen hat, erhält die Meldung:

$ screen -r
There is a screen on:
  26094.pts-6.huhnix (Attached)
There is no screen to be resumed.

Die Statusanzeige verrät: Der screen ist noch aktiv, also "attached". Bevor Sie jetzt hektisch nach dem "offenen" screen suchen, tippen Sie einfach

screen -dr

um screen in einem Rutsch zu verlassen (-d, englisch: "detach") und in diesem Fenster die Session wiederaufzunehmen (-r, englisch: "resume"). Läuft mehr als ein screen-Prozess, fragt das Programm nach, welche Session Sie wiederbeleben wollen:

There are several suitable screens on:
  26094.pts-6.huhnix (Attached)
  26464.pts-9.huhnix (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Des Rätsels Lösung liefert screen auch gleich mit: Unter Angabe der Prozess-ID (im Beispiel ist das 26094 bzw. 26464) oder des Terminal-Namens (hier pts-6 und pts-9) zusammen mit dem Hostnamen (huhnix) springen Sie gezielt in eine Session:

screen -dr 26094

funktioniert im Beispiel genauso wie

screen -dr pts-6.huhnix

Wer sich vorher informieren will, wie viele screens laufen und welchen Status diese haben, ruft über den Parameter -ls (englisch: "list") eine Übersicht auf:

$ screen -ls
There are screens on:
  26094.pts-6.huhnix (Attached)
  26464.pts-9.huhnix (Detached)
2 Sockets in /var/run/uscreens/S-suse92.

Alle Sitzungen, die als "Attached" oder "Detached" gelistet sind, können Sie wie gezeigt betreten. Sollte sich ein screen-Prozess verabschiedet haben, taucht dieser in der Liste mit dem Status-Flag "Dead" (deutsch: tot) auf. Solche Überbleibsel entfernen Sie mit

screen -wipe

Wie in der Tabelle Tastaturkommandos in "screen" notiert, öffnen Sie weitere Fenster im Fenster über die Tastenkombination [Strg-A], [C]. Wie viele von diesen virtuellen Terminals geöffnet sind, verrät der Befehl [Strg-A], [W], der für kurze Zeit eine Statuszeile am unteren Rand einblendet. Einzelne virtuelle Fenster schließen Sie, indem Sie die darin laufende Shell mit [Strg-D] verlassen. Gibt es nur noch ein virtuelles Terminal, beendet [Strg-D] die ganze screen-Sitzung.

Pufferzone

screen bietet einen Kopier-/Scroll-Modus, den Sie über [Strg-A], [Esc] betreten -- am unteren Fensterrand taucht dann der Hinweis "Copy mode" auf. Mit den Pfeiltasten blättern Sie dann nach oben und betrachten längst aus dem Fenster Herausgescrolltes. Sie verlassen diesen Modus mit [Esc].

Praktisch ist der Modus auch dann, wenn keine Maus vorhanden ist, Sie aber Textstellen in die Zwischenablage kopieren und an anderer Stelle einfügen wollen: Blättern Sie mit den Pfeiltasten bis zum Anfang der Stelle, die Sie kopieren möchten. Drücken Sie dann die Leertaste, navigieren Sie mit den Pfeiltasten bis ans Ende des zu kopierenden Textes und drücken Sie nochmal die Leertaste. Mit [Strg-A], [AltGr-9] ("]") fügen Sie den so kopierten Text im screen ein.

Standardmäßig merkt sich screen die letzten 100 Zeilen in diesem Puffer -- wem das zu wenig ist, startet das Tool mit dem Parameter -h und der Anzahl der Zeilen, also etwa

screen -h 1000

für einen 1000-Zeilen-Puffer.

Gut eingerichtet

Sie können screen über eine versteckte Konfigurationsdatei im eigenen Home-Verzeichnis an Ihre Bedürfnisse anpassen. Diese Datei gibt es standardmäßig nicht; Sie legen sie mit wenigen Handgriffen in einem Text-Editor wie Kate oder KWrite, z. B. über den Schnellstarter [Alt-F2] und Eingabe von

kwrite ~/.screenrc

an. Das Listing Eine eigene "~/.screenrc" zeigt, wie diese Konfigurationsdatei aussehen könnte, und erklärt in Kommentaren (die Zeilen, die mit einer Raute # beginnen), was die Einträge bedeuten.

Eine eigene "~/.screenrc"
# Abschalten des Splash-Screens bei Programmstart:
startup_message off

# Setzen des Puffers, z. B. auf 1000 Zeilen, um nicht
# mehr "screen -h 1000" tippen zu muessen:
defscrollback 1000

# Blendet immer eine Statuszeile mit dem Namen des
# aktiven Fensters ein:
caption always

Ein Praxis-Beispiel

Viele Kommandozeilen-Fans, die mit einem Textmodus-IRC-Client wie Irssi chatten [3], setzen screen auf einem Rechner ein, der permanent online ist (beispielsweise ein Root-Server). So kann man auch dann im Chat bleiben, wenn man die heimische Maschine ausschaltet.

Viele Schritte sind dazu nicht nötig: Melden Sie sich auf dem entfernten Rechner per SSH [1] an, starten Sie einen screen und darin den IRC-Client [3]. Wollen Sie den eigenen Computer ausschalten, legen Sie den screen auf dem entfernten Rechner mit [Strg-A], [D] schlafen und loggen sich aus. Bei der nächsten Anmeldung reaktivieren Sie die Session mit screen -r und chatten einfach weiter. (hge)

Infos
[1] SSH-Artikel: Elisabeth Bauer, "Remote Control -- ssh und scp", EasyLinux 11/2003, S. 72 ff., http://www.easylinux.de/2003/11/072-guru-ssh/
[2] Bash-Artikel: Heike Jurzik, "Befehlsgewaltig -- Shell-Arbeiten leicht gemacht", EasyLinux 01/2005, S. 79 ff., http://www.easylinux.de/2005/01/079-bash/
[3] IRC-Artikel: Heike Jurzik, "Per Mausklick um die Welt -- Internet Relay Chat", EasyLinux 02/2004, Seite 22 ff., http://www.easylinux.de/2004/02/022-irc/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2007-04-05 11:10

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]