Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 
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 STRG-a c erstellt und mit STRG-a n und STRG-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 STRG-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 STRG-a c erstellt und mit STRG-a n und STRG-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 STRG-a c
  2. Screens zu wechseln und auszuwählen STRG-a n und STRG-a p, STRG-a 0, STRG-a 1 usw, -A "
  3. Screens zu beenden STRG-a k
  4. Screens zu detachen, also im Hintergrund weiterlaufen zu lassen STRG-a d
  5. Screen Protokollierung anzuschalten (damit man nachvollziehen kann was man so auf einem remoten System getrieben hat ... ) STRG-a H
  6. Benachrichtigung bei Inaktivität oder auch Aktivität in einem Screen steuern STRG-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 STRG-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

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

*** Hinweis ***

Kommentare sind erwünscht. Aber um lästige Spamposts abweisen zu können gibt es ein paar Dinge die zu beachten sind:
  1. Kommentare mit dem Text http werden sofort zurückgewiesen mit der Meldung Sie sind nicht berechtigt den Tag zu verwenden. zz
  2. Kommentare werden manuell überprüft und es dauert deshalb in der Regel einen Tag bis sie veröffentlicht werden.