• [UNIX] Einführung in Screen

    In diesem Tutorial möchte ich euch eine Einführung zu dem GNU Tool screen geben.

    Doch ihr werdet euch bestimmt fragen: "Was ist denn Screen überhaupt?".Und um dies zu beantworten:
    Screen ist ein sog. "Terminal-multiplexer". Ich öffne Screen in einem Terminal (XTerm, gnome-terminal, konsole, usw. ABER man braucht X nicht um Screen auszuführen)
    und habe nun die Möglichkeit mehrere Programme auszuführen und zwischen diesen wechseln ohne mehrere Terminals geöffnet zu haben.

    Man kann zB in einem Screenfenster ein Programm kompilieren, in einem anderen mit irssi chatten und in einem dritten mit mutt seine EMails kontrollieren. Das gilt für alles was sich konsolenbasierend in einem Terminal ausführen lässt. Screen ist ein mächtiges Programm, und ein richtiges schweizer Taschenmesser in der Linuxwelt wenn man weiß, wie man damit umzugehen hat. Und dabei will ich euch jetzt helfen:

    Sobald ihr Screen erfolgreich installiert habt, startet ihr es mit dem Kommando "screen" in einem Terminal eurer Wahl. Wie ihr seht, erwartet euch dort eine ganz normale Shell, es sieht nach nichts besonderen aus. Aber jetzt schreibt doch ein bisschen wirwar in das Fenster um es dann zu identifizieren können.
    Anschließend benutzt ihr folgende Tastenkombination:

    • C-a c


    Wie C-a? Na ganz einfach: Crtl/Strg + a, nun seid ihr in dem Modus in dem ihr Screen weitere Instruktionen und Kommandos geben könnt. Durch drücken von c geniert ihr ein neues Fenster (create). Dieses ist jetzt wieder leer. Also schreibt wieder etwas hinein. Und dann wollen wir folgendes probieren:

    • C-a n
      Ihr springt zum nächsten (next) Fenster und seid wieder in eurem ersten Fenster.
    • C-a p
      Damit wechselt ihr zum vorherigen Fenster (previous) und seht Fenster 1.
    • C-a N
      Wobei N für eine Nummer steht. Ihr könnt nun durch auswahlen einer Nummer direkt
      zu einem Fenster eurer Wahl wechseln. Gezählt wird ab 0. Also ist unser erstes Fenster
      mit "C-a 0" zu erreichen.
    • C-a A
      Ihr müsst Shift gedrückt halten bevor ihr das 2te Mal A drückt. Nun könnt ihr eurem
      Fenster einen Namen geben. Das wird beim nächsten Schritt hilfreich sein.
    • C-a "
      Nun solltet ihr eine Übersicht über eure von Screen generierten Fenster sehen.
      Und wie gesagt, nun könnt ihr sie mit den Namen identifizieren. (Shift nicht vergessen)
    • C-a K
      Mit K für Kill könnt ihr nun Fenster schließen die ihr nicht mehr benötigt.
      Screen wird euch (nach der Standarteinstellung) fragen ob ihr das Fenster wirklich
      schließen wollt, und mit "y" (yes) bestätigt ihr das.


    Jetzt spielt mal ein bisschen mit Screen rum und öffnet Programme, gebt ihnen Namen und dann kann der Spass beginnen...
    Denn jetzt kommt Magie ins Spiel!
    Nachdem ihr nun ein paar Prozesse laufen habt, schließt ihr euer Terminal, öffnet ein neues und führt das folgende Kommando aus:

    • screen -r (reattach)


    Ihr werdet sehen: Eure ganzen Programme sind noch da! Olé! Doch wie kann das gehen?
    Screen speichert eure ganzen Programme in einer Session und lässt diese im Hintergrund laufen. Und indem ihr das Terminal schließt, "loggt" ihr euch nur von dieser Session aus.
    Das könnt ihr auch manuel mit

    • C-a d (detach)


    machen. Wie ihr euch bestimmt vorstellen könnt ist diese Funktion sehr praktisch. Man kann zB ein großes Programm kompilieren, das Terminal schließen und X neustarten und nach einem "screen -r" seht ihr, dass das Programm immernoch kompiliert.

    Oder eine etwas eigene Art von "Remote-desktoping" ist möglich: Ihr loggt euch per SSH auf einem Server ein, startet irssi, schließt euer Terminal, und nach einem wiedereinloggen und einem reattach seid ihr immernoch online.

    Aber vergesst nicht: Die Programme müssen in einer Screen Session laufen!

    Falls ihr smarte Terminaluser seid, werdet ihr vielleicht schon gemerkt haben, dass ihr nicht mit eurem Mausrad hochscrollen könnt, um euch den Inhalt oben anzusehen. Um das zu tun benutzt ihr folgendes Kommando um in den "scrollback buffer" per "copy mode" zu kommen:

    • C-a [


    Nun könnt ihr ganz simpel mit den Pfeiltasten hoch und runter scrollen und euch
    was zu markieren. Dies könnt ihr mit

    • C-a ]


    wieder einfügen.

    Aber wie beende ich Screen? Eine Session bleibt ja immer bestehen, wie ihr gemerkt habt, und um Screen zu beenden müsst ihr einfach jedes Fenster dass in der Session läuft mit C-a K schließen und nachdem das letzte gelöscht befindet ihr euch wieder in eurer normalen Shell ohne Screen im Vordergrund.

    Ich bin ich jetzt nicht auf viele weitere Möglichkeiten von Screen eingegangen und werde das auch nicht tun, da dies ja nur eine Einführung sein soll. Für weitere Informationen würde ich euch vorschlagen die Manpage von Screen aufzurufen (man screen) oder einen der untenstehenden Links zu besuchen:

    Die Screen-FAQ
    Eine FAQ bezüglich Screen. Leider nicht für Anfänger geeignet.

    Screen manpage
    Die manpage von Screen online.

    Eine umfassende Einführung zu Screen
    Diese englische Einführung stand Vorbild zu dem Tutorial das ihr grade lest. Ich hoffe ihr könnt
    es verschmerzen dass ich viel übernommen habe.

    Und vergesst nicht:
    Wer das schweizer Taschenmesser Screen beherrscht, kann der McGyver unter den Linuxusern werden!

    (Dieses Tutorial wurde uns freundlicherweise von Thorsten Ball zur Verfügung gestellt, herzlichen Dank!)
     


     
    Kommentare 1 Kommentar
    1. Avatar von franc
      franc -
      Eine Frage zum Verständnis: wenn ich mehrere screen-Sessions "detache", wie kann ich dann alle auf einmal beenden?
      STRG+A, STRG+\
      funktioniert nämlich nicht, oder ich gebe es nicht richtig ein, also es erscheint dann einfach der Backslash.
      In der Anleitung:
      http://www.gnu.org/software/screen/m...reen.html#Quit
      steht ja (als Ersatz?) auch der Befehl:
      — Command: quit
      aber da weiß ich gar nicht, WO ich dieses quit eingeben soll und die Syntax der Befehle ist auf dieser Seite ja überhaupt nirgends aufgeführt, das weiß man vermutlich einfach, oder halt nicht

      Ich beende derzeit so:
      screen -r
      dann kriege ich eine Liste der detachten screens mit u.a. PID, die schieße ich dann mit kill ab, aber das ist sicher nicht die richtige Lösung