logoOL.gif
user_gelb_schwarz_or.gif
logoUL.gif
logoUR.gif claim.gif
LinuxUser LinuxCommunity EasyLinux Linux-Magazin International
      Anzeige
TFT Monitor bei Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich.
Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps.
Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung.
Günstige Shareware Programme als direkte Downloads im Software Portal.
Bis zu 70% sparen durch Preisvergleich.
      Anzeige

Erschienen in LinuxUser 09/2004   »   Ausgabe bestellen

Zu Befehl: screen

Fensterzauber

von Heike Jurzik
 [ Titelbild ]


Der Desktop, unendliche Weiten -- in welchem Terminal war gleich...? Mit dem Programm screen verwalten Sie mehrere virtuelle Konsolen in einem einzigen Terminal-Fenster, lassen Prozesse auf entfernten Servern weiterlaufen (während Sie längst vom System abgemeldet sind) und schauen anderen Benutzern -- mit deren Zustimmung -- auf die Finger.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen -- wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Wer gerne auf der Kommandozeile arbeitet, benutzt auch in der grafischen Umgebung Terminal-Programme. Und so läuft in dem einen Xterm das Mail-Programm, im nächsten der IRC-Client und im dritten ein Editor: Ruckzuck wird die Sache trotz virtueller Desktops unübersichtlich. KDEs Konsole macht es vor: In Tabs lassen sich mehrere Terminals in nur einem Fenster verwalten -- per Tastenkombination wandern Sie durch diese hindurch.

Das Programm screen [1] läuft auch ohne grafische Oberfläche auf der Konsole und ist ein echter Alleskönner: Neben der Verwaltung zahlreicher virtueller Konsolen können Sie in screen gestartete Prozesse auf entfernten Rechnern weiterlaufen lassen, sich beruhigt vom System abmelden und zu einem späteren Zeitpunkt die Session wiederbeleben, um den Output oder ein Logfile zu betrachten. Mit wenigen Handgriffen teilen Sie eine screen-Sitzung sogar mit anderen Benutzern und erleben so virtuelles Teamwork. Diese und viele andere Kniffe zeigt diese "Zu Befehl"-Folge -- screen macht die Arbeit auf der Konsole einfach zauberhaft.

Auf screen geht's los

Um mit dem Fensterzauber zu beginnen, geben Sie am Eingabeprompt screen ein. Ein Splashscreen begrüßt Sie (Abbildung 1) und verrät: Mit der Leer- oder Eingabetaste geht es weiter. Auf den ersten Blick sieht die screen-Session wie ein normales Terminal aus. Die Bedienung, vor allem einige Tastaturkommandos, ist allerdings etwas gewöhnungsbedürftig. Eine der größten Umstellungen ist die Sonderfunktion von [Strg-A] -- in der Bash bringt diese Kombination Sie an den Anfang der Eingabe, bei screen ist sie der Auftakt zu weiteren Funktionen. Tippen Sie beispielsweise [Strg-A], [?], um eine Übersicht aller screen-Kommandos zu erhalten (siehe auch Tabelle 1, "Tastaturkommandos in screen").

Abb. 1: Bugreports, T-Shirts, Bier und Pizza für die Programmierer -- "screen" blendet beim Start Lizenzinformationen ein.

Tabelle 1: Tastaturkommandos in screen
[Strg-A], [?] Die Online-Hilfe mit allen verfügbaren Kommandos.
[Strg-A], [C] Öffnet ein neues virtuelles Terminal im screen.
[Strg-A], [0] bis [9] Wechselt zum virtuellen Terminal mit der entsprechenden Nummer.
[Strg-A], [Leertaste] Springt zum nächsten virtuellen Terminal weiter.
[Strg-A], [W] Blendet am unteren Rand für kurze Zeit eine Statuszeile ein; das aktive Terminal wird durch ein * gekennzeichnet.
[Strg-A], [Umsch-A] Gibt dem virtuellen Terminal einen Namen.
[Strg-A], [Umsch-2] Blendet eine Liste mit den Namen und den Nummern der virtuellen Konsolen ein; mit den Pfeiltasten blättern Sie zu einem Eintrag und bestätigen mit [Eingabe], um zu genau dieser Konsole zu wechseln.
[Strg-A], [A] Sendet die Kontrollsequenz [Strg-A] ins Terminal, z. B. um in der Bash an den Anfang der Eingabe zu springen.
[Strg-A], [X] Sperrt den screen; geben Sie Ihr Passwort ein um weiterzuarbeiten.
[Strg-A], [Umsch-H] Schreibt die Ausgaben des Terminals in ein Logfile mit Namen screenlog.<nummer>; als Nummer wird die Nummer des virtuellen Terminals angehängt. Die Wiederholung des Kommandos beendet das Mitschneiden.
[Strg-A], [Esc] Startet den Kopier-/Scroll-Modus. Besonders praktisch ist dieses Feature, wenn keine Maus vorhanden ist: Benutzen Sie z. B. die Pfeiltasten (alternativ h, j, k und l) um zu navigieren. Um etwas in die Zwischenablage einzufügen, drücken Sie die Leertaste, gehen ans Ende des zu kopierenden Textes und drücken nochmals die Leertaste. Die Kombination [Strg-A], []] (die schließende eckige Klammer) fügt den Text ein; mit [Esc] brechen Sie den Kopiervorgang ab.
[Strg-A], [D] Detacht (engl. "ablösen, abtrennen") den screen; Sie verlassen nur das Programm selbst -- alle im screen gestarteten Prozesse laufen weiter.
[Strg-A], [Umsch-K] Beendet den screen und alle darin laufenden Prozesse; zur Sicherheit fragt das Programm aber nach: Really kill this window [y/n]

Tabelle 1 verrät, dass Sie den screen durch [Strg-A], [D] verlassen, Prozesse in der Sitzung aber weiterlaufen. Um eine solche "detachte" Session wiederzubeleben, tippen Sie screen -r (für "reattach"). Falls der screen vorher nicht durch [Strg-A], [D] detacht wurde, können Sie ihn auch entfernt über screen -d verlassen oder beide Parameter ganz praktisch in einem Aufruf kombinieren: screen -dr. Laufen allerdings mehrere screen-Sessions, weist das Programm darauf hin:

$ screen -dr
There are several suitable screens on:
   672.pts-6.asteroid  (Detached)
   953.pts-6.asteroid  (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Mit der Ausgabe sagt Ihnen screen, dass Sie genau angeben müssen, welche Session er wiederbeleben soll, das geht dann beispielsweise mit

screen -dr 672.pts-6.asteroid

Wem das ganze zu unübersichtlich ist, der gibt der Sitzung direkt beim Start einen Namen, z. B. für eine entfernt laufende IRC-Sitzung screen -S irc. Die Auflistung mit screen -ls zeigt jetzt statt Terminal- und Host-Namen die Prozess-ID und den Namen:

$ screen -ls
There are screens on:
   963.irc   (Attached)
   969.mail  (Detached)
2 Sockets in /var/run/screen/S-huhn.

Neben der Angabe der Prozess-ID und des Namens (oder der Terminal- und Host-Namen) sehen Sie weiterhin, ob der screen gerade aktiv (Attached) oder nicht (Detached) ist. Sehen Sie als Status-Flag hingegen Dead, hat sich der Prozess aufgehängt. Einen "toten" screen entfernen Sie mit

screen -wipe

Der Puffer für den Scrollback- oder Copy-Modus ist bei screen standardmäßig auf 100 Zeilen gesetzt. Wenn Programme aber viel Output generieren, können 100 Zeilen schnell zu knapp werden. Verwenden Sie solche Programme, teilen Sie screen beim Start die gewünschte Puffergröße mit:

screen -h 1000

Über die Schulter geschaut

Mit screen können Sie anderen Benutzern bei der Arbeit zuschauen. So kann eine geteilte Session als eine Art Lern-Software eingesetzt werden: Teilen Sie sich einfach mit einem Administrator die Session und schauen Sie ihm virtuell auf die Finger. Dazu setzen Sie zunächst (mit Root-Rechten) für das Programm selbst das s-Bit [2]:

# chmod +s /usr/bin/screen

Auf Debian-Systemen entziehen Sie zusätzlich dem Verzeichnis /var/run/screen die Schreibrechte für die Gruppe; das geht (immer noch mit Root-Rechten) mit dem Befehl:

# chmod g-w /var/run/screen

Anschließend startet der erste Benutzer einen screen und schaltet den Multiuser-Mode an: Mit [Strg-A], [:] erhält er einen Prompt und gibt dann multiuser on ein. Einem zweiten Benutzer erlaubt er den Zugriff auf die Session durch [Strg-A], [:] und anschließende Eingabe von addacl <benutzer2>. Dieser zweite Benutzer kann nun mit dem Befehl

screen -x <benutzer1>/<PID>

auf die Session "aufspringen" (Abbildung 2). Um mehreren Benutzern die Teilnahme zu ermöglichen, können Sie übrigens eine durch Kommata getrennte Liste von Benutzernamen hinter addacl schreiben.

Abb. 2: Geteilter "screen" -- doppelte Freude.

Farbenzauber

Nicht unbedingt lebenswichtig für die Arbeit mit screen, aber doch ein hübsches Extra ist die farbliche Gestaltung der Statuszeile für die virtuellen Konsolen. Eine Statuszeile blenden Sie dauerhaft ein, indem Sie in einer laufenden screen-Session den Befehl

screen -X caption always

eingeben. Am unteren Rand erscheint eine invers dargestellte Statuszeile mit der Nummer und dem Namen (gesetzt durch [Strg-A], [Umsch-A]) des virtuellen Terminals.

Daneben blenden Sie bei Bedarf weitere Informationen ein: In der Manpage zu screen finden Sie im Abschnitt STRING ESCAPES Hinweise, wie Sie die Statuszeile dazu bringen, verschiedene Daten (z. B. die aktuelle Uhrzeit oder den Titel) anzuzeigen und auch noch farblich zu gestalten. Geben Sie in einer laufenden screen-Sitzung beispielsweise

screen -X caption always "%{rw} * %H * | $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<"

ein. Was zunächst sehr kryptisch wirkt, kann man einfach aufschlüsseln und erklären:

Abbildung 3 zeigt das Endergebnis des Farbenzaubers.

Abb. 3: Eine farbige Statuszeile sorgt für mehr Übersichtlichkeit in "screen".

Auf immer und ewig

Viele der im Artikel vorgestellten Funktionen können Sie in eine Konfigurationsdatei schreiben, die beim Programmstart eingelesen wird. Sie heißt .screenrc und liegt in Ihrem Home-Verzeichnis. Wollen Sie beispielsweise die Größe des Puffers nicht jedesmal neu mit dem Parameter -h angeben, tragen Sie

defscrollback 1000

in die Datei ein. Um den Begrüßungsbildschirm zu deaktivieren, fügen Sie den Eintrag

startup_message off

hinzu. Die im Abschnitt "Farbenzauber" vorgestellte farbige Statuszeile binden Sie mit dem Eintrag

caption always "%{rw} * %H * | $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%<"

ein -- achten Sie darauf, dass die lange Zeile nicht umgebrochen wird.

Besonders praktisch ist die Möglichkeit, eigene Kommandos einzurichten. Wer immer wieder zum gleichen Rechner eine SSH-Verbindung aufbaut, definiert dafür ein Tastaturkommando:

bindkey ^f screen -t Titel ssh anderer.rechner.de

Drücken Sie nun in einer laufenden screen-Session [Strg-F], erzeugt das Programm ein neues virtuelles Terminal mit dem Titel "Titel" und baut in diesem eine SSH-Verbindung zum Rechner anderer.rechner.de auf.

Darüber hinaus lohnt sich ein Blick in die systemweite Konfigurationsdatei /etc/screenrc und in die sehr ausführliche Manpage -- richten Sie screen einfach nach Ihren Wünschen und Bedürfnissen ein und zaubern Sie mit den virtuellen Konsolen. (hge)

Infos

[1] screen-Homepage: http://www.gnu.org/software/screen/
[2] s-Bit: Heike Jurzik, "Gleiches Recht für alle?", LinuxUser 07/2004, S. 69 ff., http://www.linux-user.de/ausgabe/2004/07/069-zubefehl/

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 | © 2010 Linux New Media AG | Last modified: 2008-04-22 14:00

[Linux-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Ubuntu User] [Linux Technical Review] [Linux Magazine] [Linux Pro Magazine] [Ubuntu User]
[EasyLinux Poland] [Linux Magazine Poland] [Linux Magazine Brasil] [EasyLinux Brasil] [Linux Magazine Spain]