Vor längerer Zeit hat mich mal jemand im irc chat auf 'screen' hingewiesen. Das Thema war eigentlich nicht screen - aber derjenige hatte gerade die Mächtigkeit von screen kennengelernt und wollte dieses Wissen gleich an mich weiterreichen. Danach habe ich screen oft benutzt wenn auf einem remoten System aktiv war und andere sehen sollten, was ich in der Linux Befehlszeile eingebe und was für Ergebnisse ich sehe. War besonders hilfreich wenn ich  von Leuten bei Linuxproblem gebeten wurde, diese auf ihren Systemen zu beheben, und ich sicherstellen wollte, dass diese zukünftig diese Fehler selbst beheben können. Mittlerweile benutze ich screen regelmäßig auch in weiteren Scenarien.
Eben habe ich mir noch mal die man Page von screen angesehen und festgestellt, dass es noch wesentliche weitere Funktionen in screen  gibt. Ich habe im Folgenden mal kurz beschrieben was man so alles mit screen anstellen kann, wo es hilft und welche Tastaturbefehle besonders hilfreich sind.
 
Typische für mich sinnvolle Einsatzfälle von screen:
  1. Mehrere Leute wollen gleichzeitig sehen, was jemand auf einem System auf der Commandline tut und Ergebnisse gemeinsam ansehen.
    • User 1 gibt screen bei sich ein
    • User 2 verbindet sich von remote auf das System von User 1 und gibt screen -x ein. Danach sehen beide dieselbe Konsole. D.h dann auch dass beide gleichzeitig Befehle eingeben können. Da ist also eine gewisse Synchronisation notwendig. Als ganz hilfreich hat es sich erwiesen dann immer direkt auf der Konsole miteinander zu kommunizieren. Das geht ganz einfach wenn man vor jeden Befehl in der Befehlszeile einen Gartenzaun (#) eingibt so dass die bash die Eingabe nur als Kommentar versteht und keine Fehler ausgibt.
  2. Man arbeitet remote per ssh auf einem System und braucht mehrere parallele Bildschirme
    • Nach Erstellung von einem Screen durch Eingabe von screen werden weitere Screens durch C-a c erstellt und mit C-a n und C-a p durch die Screens gewechselt.
  3. Längerlaufende Aktivitäten sollen von unterschiedlichen remoten Systemen kontrolliert und gesteuert werden.
    • Nach Eingabe von screen werden Aktivitäten gestartet und der Screen durch C-a d in den Background geschickt. Logoff von dem System. Danach logon zu dem System von einem anderen Client (z.b. nun von zu Hause) und mit screen -r den Screen wieder öffnen und die Aktivität fortsetzen.
    • Will man gleich zum Startzeitpunkt des Systems ein Programm per Screen starten fügt man folgende Zeile in die /etc/crontab ein und kann dann mit den vorgenannten Befehlen nachträglich zu der Screensession verbinden:
      @reboot   root   /usr/bin/screen -dmS "<ScreenSessionName>" <absoluterPfadDesProgramms>
  4. Man springt auf einem System zwecks Problemanalyse in diversen Verzeichnissen rum und möchte diese schnell wechseln und Ausgaben aus den Verzeichnissen schnell vergleichen.
    • Nach Erstellung von einem Screen durch Eingabe von screen werden weitere Screens durch C-a c erstellt und mit C-a n und C-a p durch die Screens gewechselt.
 
Benutzt man eine graphische Oberfläche, kann man verschiedene Fenster parallel öffnen und alle o.g. Einsatzfälle abdecken. Allerdings ist eine GUI Overkill bei kleinen kurzen administrativen Tätigkeiten und sogar gefährlich, wenn man auf Server im Internet per X zugreift - und das noch als root. Ein Server im unsicheren Internet darf aus SecurityGründen kein laufendes X haben! D.h. sämtliche Administration muss in der Befehlszeile per ssh durchgeführt werden. Auch gehen viele Dinge in der Befehlszeile einfach schneller als sich durch ein GUI Menu zu clicken.
 
screen ist also ein virtueller ConsolenVervielfältiger, d.h. das Tool erlaubt, beliebig viele Konsolen über eine ssh Session aufzubauen und unter diesen sehr schnell zu wechseln.Ausserdem sind solche screen Sessions auch von weiteren ssh Sessions zugreifbar, d.h. mehrere Personen können sich eine Konsole teilen.
 
Nachdem man per 'screen' eine neue Session aufgebaut hat stehen in dieser Session diverse 'screen Befehle' zur Verfügung. Dazu gehören
  1. einen weiteren Screen an der aktuellen Session zu erzeugen C-a c
  2. Screens zu wechseln und auszuwählen C-a n und C-a p, C-a 0, C-a 1 usw, C-A "
  3. Screens zu beenden C-a k
  4. Screens zu detachen, also im Hintergrund weiterlaufen zu lassen C-a d
  5. Screen Protokollierung anzuschalten (damit man nachvollziehen kann was man so auf einem remoten System getrieben hat ... ) C-a H
  6. Benachrichtigung bei Inaktivität oder auch Aktivität in einem Screen steuern C-a M
Die Steuerung ist relativ einfach: Man drückt Strg, dann den Buchstaben a und dann den eigentlichen Befehlsshortcut ein. Die folgende Tabelle enthält alle Shortcuts, die ich für sinnvoll erachte. Es gibt noch viele weitere, die man per man screen oder einfach googeln nach screen linux finden kann oder einfach durch Eingabe von C-a ? in einem screen Fenster.
 

screen Aufrufparameter

 

Parameter Funktion  Kommentar
   Erzeugen einer neuen Screen Session  kein Parameter
-ls  Listet wie ls die bestehenden Screen Sessions  
-x  Öffnet eine Verbindung zu einer schon offenen Session  Damit können sich mehrere Personen eine Session gemeinsam teilen und ansehen
 -r  Öffnet eine Verbindung zu einer nicht verbundenen Session  Damit kann man Sessions wieder von anderen Clienst aufnehmen.
 -L  Einschalten des LogModus  
 

Shortcuts in screen Fenstern

 
C-a heisst immer drücken von Ctrl und dem Buchstaben a gefolgt von dem eigentlichen Shortcut
 
Befehl Funktion  Kommentar
 C-a "  Anzeige aller Screens  
 C-a A  Vergabe eines Namens für ein Fenster (Anzeige bzw Auswahl mit C-a ")  
 C-a 0  Anzeige von Screen Nr 0  0-9 möglich
 C-a A  Ändern des Screennamens  
 C-a c  Öffnen eines neuen Screens (c = create)  
 C-a d  Schliessen eines Screens in den Background (d = detach)  
 C-a k  Schliessen eines Screens (k = kill)  
 C-a H  Screen hardcopy in Datei  screenlog ein/ausschalten  
 C-a n  Nächsten Screen öffnen (n = next)  
 C-a p  Vorherigen Screen öffnen (p = previous)  
 C-a ?  Anzeigen der Keybindings  
 C-a *  Anzeigen der momentanen Screens in der Session  
 

Kommentar schreiben

Spam Kommentare sind sinnlos !
Vor der Publizierung wird jeder Beitrag auf Spam geprüft. Leider dauert es deswegen bis ein Kommentar sichtbar wird. Dafür erhält aber kein Subscriber Spam eMails.
Die eMail ist optional und nicht öffentlich sichtbar. Sie ist notwendig um eMail Benachrichtigungen zu Antworten auf Kommentare zu erhalten und wird u.U. genutzt um offline zu kommunizieren.

Spam comments are useless !
Any comment will be reviewed first and checked for spam. Unfortunately this delays the publishing of comments but will protect subscribers from spam.
eMail is optional and hidden and is required get update notifications for any comments and may be used to contact you offline