Linux: Sessions erstellen mit Screen
Geschrieben von Eric Scheibler am 28.09.2010
Wenn man sich mittels SSH auf dem Server einloggt, hat man erstmal nur eine Shell zur Verfügung. Es kommt aber relativ häufig vor, dass man einen Prozess ausführt, der diese Shell länger blockiert. Zum einen kann man in dieser Zeit nichts mehr am Server machen, zum anderen wird der laufende Prozess auch noch abgebrochen, wenn man die SSH Verbindung trennt (weil man das Notebook beispielsweise abschaltet). Mit Screen kann man beliebig viele Sessions öffnen, dort Befehle absetzen und dann auf seine ursprüngliche Shell zurückkehren. Außerdem werden die laufenden Prozesse beim Beenden nicht abgebrochen, eine Session bleibt solange offen, bis der Server neu gestartet oder sie vom Benutzer gekillt wird.
Erstmal Screen installieren:
# apt-get install screen
Anschließend erstellt man eine neue Session:
screen -S Sessionname
Es öffnet sich eine neue Shell mit den gleichen Benutzerrechten, die man nun beispielsweise mit einem zeitraubenden Befehl befüllt. Will man jetzt zur ursprünglichen Shell zurückkehren um weiterzuarbeiten, drückt man erst CTRL+a und anschließend d.
Nun landet man wieder in der Ausgangsshell. Will man später in die geöffnete Session zurückspringen, geht das mit:
screen -x Sessionname
Nun noch ein paar Befehle, die sich alle in einer geöffneten Session anwenden lassen
- CTRL-a d: ins Hauptfenster zurückkehren, Session läuft im Hintergrund weiter
- CTRL-a c: erstelle neues Fenster in der aktuellen Session
- CTRL-a A: das Fenster im Vordergrund umbenennen
- CTRL-a “: eine Liste mit allen laufenden Fenstern anzeigen
- CTRL-a n: nächstes Fenster)
- CTRL-a p: vorheriges Fenster
- CTRL-a 0..9: bringt das Fenster mit der jeweiligen Nummer in den Vordergrund
- CTRL-a N: ermittelt die Nummer des aktuellen Fensters
- CTRL-a k: aktuelles Fenster killen, wenn alle Fenster einer Session geschlossen wurden, beendet sich die Session
Screen Config File
Einige Tastenkombinationen können auch neu definiert werden. Dies
geschieht in der Konfigurationsdatei ~/.screenrc
.
Ein Beispiel: F11 = vorheriges und F12 = nächstes Fenster
# redefine keys
bindkey -k F1 prev
bindkey -k F2 next
Ebenfalls in der Config Datei können Programme definiert werden, die bei jedem Screen Session Start geladen werden, z.B. Top im ersten Fenster:
screen -t Top zsh -c "top zsh" # start top in the first window
Die Startnachricht lässt sich folgendermaßen deaktivieren:
startup_message off
Verschachtelte Screen Instanzen
Hat man beispielsweise auf dem Notebook eine Screen Session offen und verbindet sich innerhalb eines Fensters via SSH zu einem entfernten Rechner, auf dem ebenfalls eine Screen Session läuft, hat man ein Problem. Will man z.B. auf dem entfernten Rechner ein neues Fenster erstellen und drückt dabei Ctrl-a c so wird das Fenster nicht remote sondern in der Notebook Session erzeugt. Die Lösung besteht darin, Ctrl-a zwei mal zu drücken und anschließend erst c.
Beispiele:
- ctrl-a ctrl-a n: Nächstes Fenster
- ctrl-a ctrl-a p: Vorheriges Fenster
- ctrl-a ctrl-a k: Fenster killen