Screen

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.
Starte “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 (Crtl/Strg + a c)
    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.