Shellkonfiguration – Übersicht
Normalerweise sehen die in einem Terminal laufenden Prozesse dasselbe Terminal (als ihr controlling terminal) wie der Benutzer, also
ein Pseudoterminal (/dev/pts/1, /dev/pts/2) eines Terminal-Emulators (xterm, konsole, gnome-terminal o.a.); dies ist der mit Abstand häufigste Fall
eine virtuelle Konsole (tty1, tty2) im "Textmodus" des Kernels
eine serielle Konsole (ttyS0), auch wenn der Benutzer die nicht physisch sieht
Ein Terminal-Multiplexer ist sozusagen eine zweite Ebene von Terminal-Emulator. Er besteht aus einem Client- und einem Serverprozess. Der Serverprozess öffnet mindestens ein weiteres Pseudoterminal. Die in dem Terminal-Emulator gestarteten Prozesse haben als controlling terminal eins der Pseudoterminals des Serverprozesses. Der Client läuft in dem Terminal, das der Benutzer sieht, fragt den Inhalt des "virtuellen" Pseudoterminals ab und "kopiert" den in das sichtbare Terminal.
Vorteile dieser Vorgehensweise sind:
Die über SSH interaktiv durchgeführten Aktionen werden durch einen Zusammenbruch der SSH-Verbindung nicht beeinträchtigt, weil die relevanten Prozesse (Shell und von ihr gestartete) von der SSH-Verbindung gar nichts wissen. Die Verbindung zwischen den Prozessen und dem Serverprozess des Terminal-Multiplexers ist von Netzwerkproblemen nicht betroffen.
Nach einer Störung kann man eine neue SSH-Verbindung aufbauen, einen neuen Clientprozess des Terminal-Multiplexers starten und sich so das "virtuelle" Pseudoterminal anzeigen lassen.
Man muss am Ende des Arbeitstags nicht den aktuellen Zustand beenden, sondern kann über Tage hinweg (bis zum nächsten Reboot) nahtlos da weitermachen, wo man aufgehört hat.
Wenn in einem Terminal sehr viel ausgegeben wird (so dass die Übertragung übers Netzwerk zum Problem wird), kann man das angezeigte Terminal einfach umschalten, so dass die Ausgabe ungebremst auf das "virtuellen" Pseudoterminal erfolgt.
Man kann mehrere Terminals über eine einzige SSH-Verbindung steuern (was dem Benutzer allerdings meistens egal ist, sofern er nicht gerade jeweils sein Passwort oder seine Passphrase eingeben muss).
Mehrere Benutzer können sich gleichzeitig (über dasselbe oder, mit größerem Aufwand, unterschiedliche Benutzerkonten) mit demselben "virtuellen" Pseudoterminal verbinden und sehen dann nicht nur (sehr effizient, da als Text übertragen), was die anderen dort machen, sondern können auch selber Eingaben vornehmen (falls ihnen die dafür nötigen Rechte zugewiesen werden).
Man kann den Bildschirm sehr flexibel unterteilen, mehrere Terminals gleichzeitig anzeigen, einzelne Terminals ein- und ausblenden (das ist allerdings ganz ähnlich mit manchen grafischen Terminal-Emulatoren möglich).
Man kann Eingaben gleichzeitig an mehrere Terminals schicken (auch das ist allerdings ganz ähnlich mit manchen grafischen Terminal-Emulatoren möglich).
Ein Shellscript (oder allgemein: ein Terminalprogramm) kann einen Terminal-Multiplexer starten, entsprechend konfigurieren und in mehreren gleichzeitig angezeigten Terminals unterschiedliche Programme gleichzeitig laufen lassen.
Dieser Eintrag hat primär historische Relevanz. Wer screen
noch nicht kennt, sollte sich diese Software gar nicht erst anschauen, sondern sich statt dessen mit dem "Nachfolger" tmux
vertraut machen.
Für diejenigen, die screen
schon nutzen, aber sich nie intensiv mit den Konfigurationsmöglichkeiten vertraut gemacht haben, hier meine aktuelle Konfiguration (durch ein Wechsel meiner Arbeitsumgebung war ich endlich gezwungen, mich mit tmux
vertraut zu machen und werde mich nach und nach von screen
verabschieden, dankbar für viele gute Jahre...):
start cmd:> cat ~/.screenrc scrollback 5000 termcapinfo xterm ti@:te@ termcapinfo xterm-color ti@:te@ termcapinfo xterm-256color ti@:te@ caption always '%{=r Wy} %H %{=r wb} %-w%{+b Wb}%n: %t%{=r wb}%+w' startup_message off
Die Beschreibung von tmux
ist so umfangreich, dass sie eine eigene Seite hat.