Home   Profil   Fun
#67 Linux  07.06.2009

Mit screen bleiben Sessions bestehen auch wenn die Verbindung abbricht


Screen erlaubt Sessions weiterlaufen zu lassen, auch wenn man sich von einem Server ausloggt oder die Verbindung unerwartet getrennt wird. Anschließend kann man sich einfach wieder mit dem Server verbinden und in die zuletzt verlassen Session wieder einloggen. Normalerweise wird eine Session durch Ausloggen oder Verbindungsabbruch beendet und somit die Prozesse darin beendet. Mit screen kann man dieses Verhalten verhindern. Man kann auch mit mehreren virtuellen Sessions zur gleichen Zeit arbeiten und sogar den Bildschirm horizontal aufsplitten. Es ist auch möglich von mehreren Clients sich mit der selben Session zu verbinden. Was dann in dieser Session getan wird kann von allen Clients gleichzeitig gesehen werden.

Und so funktioniert es:

screen starten.
screen

Um alle Aktivitäten bzw. den gesamten Konsolenoutput einer Screen-Session nach screenlog.[nr] zu sichern, kann man den Parameter -L verwenden.
screen -L

Alle laufenden screen-Session anzeigen.
screen -ls

Sich mit einer screen-Session wieder verbinden, die die PID 19496 hat.
screen -r 19496

Entfernt zerstörte screen-Sessions.
screen -wipe


Ein Beispiel eines Arbeitsablaufes:
Man logt sich auf dem Server ein und startet screen. Es ist nicht viel zu sehen, aber man befindet sich nun in einem virtuellen Terminal, das von screen kontrolliert wird.
<space>

(Jetzt führt man seine Arbeit durch, z.B. eine lange Compilierung eines Programmes.)

Um sich nun auszuloggen vom Server ohne die Session und damit die Compilierung abzubrechen geht man so vor.
Sich von dieser Screen-Session trennen, ohne sie zu beenden.
<Ctrl-a d>

Jetzt kann man sich vom Server ausloggen.
...
Wenn man mit seiner Arbeit fortfahren möchte, logt man sich wieder auf den Server ein.

Und verbindet sich wieder mit der screen-Session.
screen -r

Ist man fertig, beendet man die Screen-Session.
<Ctrl-a k>
oder
<Ctrl-a K>


Mehrere virtuelle Terminals.
Ich nehme hier an, dass screen bereits gestartet wurde.

Ein neues Fenster öffnen
<Ctrl-a c>

Zum vorhergehenden Fenster springen.
<Ctrl-a p>

Zum nächsten Fenster springen.
<Ctrl-a n>


Eine Region in zwei splitten.
<Ctrl-a S>

Den Fokus auf die nächste Region setzen.
<Ctrl-a Tab>

Falls diese Region neu ist, muss man darin ein Fenster erzeugen, sonst ist sie einfach leer und man hat keine Shell.
<Ctrl-a c>

Alle Regionen außer der aktuellen entfernen.
<Ctrl-a Q>


Multi-Display-Mode
Möchte man sich mit einem zusätlichen Client mit einer Session verbinden, sodass beide Clients simultanen Zugriff haben, nimmt man -x.
screen -x