Multi-Desktop über SSH-Terminal

Wer oft via SSH in einem Terminal auf einem Remotesystem arbeitet der kennt das Problem: Man muss zum Beispiel ein Tool starten und gleichzeitig ein Logfile prüfen und vielleicht auch gleich noch die Auslastung einsehen können. Das Problem von SSH, dafür müssen gleich 3 Verbindungen aufgebaut werden und man wechselt zwischen 3 Fenstern hin und her.
Doch heute bin ich auf das Tool „Screen“ gestossen – ein praktisches kleines Stück Software, das mir bisher leider vorenthalten wurde. Screen ermöglicht das Aufbauen, Umschalten und Verwalten von mehreren Anzeigen in nur einer Session. Auch ist es möglich, eine Anzeige wieder aufzunehmen, selbst wenn die Session zwischenzeitig beendet wurde – also auch durchaus geeignet für fehleranfällige Verbindungen. Oder es kann einer anderen Session ermöglicht werden, den selben Inhalt einer Anzeige zu sehen, wie ich auch in meiner Session sehe.

Unter Ubuntu gibt es Screen direkt aus den Paketquellen:

apt-get install screen

Das Handling von Screen benötigt ein kleines bisschen an Wissen, doch die paar Parameter und Tastenkombinationen sollte man sich problemlos merken können… Wenn man nun mit Screen loslegen will, so sollte man zuerst einen neuen Screen erzeugen und diesen mit einem Namen versehen:

screen -S initial

Will man innerhalb einer aktiven Anzeige eine Neue erstellen, so verwendet man CTRL + A + C (create). Zum Wechseln zwischen einzelnen Anzeigen gibt es CTRL + A + SPACE und zum löschen CTRL + A + D (delete / detach).

Wenn man mal nicht mehr weiss, welche Anzeigen noch alle existieren, so kann man sich auch eine Liste ausgeben lassen:

screen -ls

Mittels -r nimmt man eine alte Anzeige wieder auf:

screen -r initial

Und über -d schliesst man eine Anzeige:

screen -d initial

Wirklich nützlich wird das Ganze aber erst, wenn man sich eine Anzeige mittels Screen gleich automatisch beim Verbinden via SSH generieren lassen kann. Denn meist hat man das Problem, das etwas bereits läuft und man erst später merkt, dass man noch eine zusätzliche Anzeige brauchen könnte. Und zu Beginn hat man Screen natürlich nicht gleich gestartet…
Abhilfe schafft hier folgendes Script, welches an die Datei ~/.bashrc angehängt wird:

if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x -a "${SSH_TTY:-x}" != x ]
then
  STARTED_SCREEN=1 ; export STARTED_SCREEN
  screen -D -RR -S initial && exit 0
  echo "Screen failed! continuing with normal bash startup"
fi

Von nun an verhält sich Screen unschuldig und unauffällig im Hintergrund, doch wenn es mal gebraucht wird, steht es auch wirklich zur Verfügung.

13 Kommentare bei „Multi-Desktop über SSH-Terminal

  1. Hi,
    die Sache mit Screen hat sich bei mir auch bewährt, als ich einige wirklich lange dauernde Prozesse auf nem Server laufen ließ. Schade ist dabei, dass einem manchmal erst später auffällt, dass der Prozess länger dauert, während man eigentlich mit dem Notebook losmüsste.
    Eine ganz gute Alternative ist hier mosh (http://mosh.mit.edu/), steht für mobile shell und bietet echtes Roaming. Das heißt: Immer mosh statt ssh starten und man kann beliebig Netzwerke wechseln und in den Standby gehen. mosh stellt die Verbindung dann automatisch wieder her (läuft auf der Gegenseite permanent weiter).

  2. Dann noch folgende Zeile in der .screenrc ergaenzen: termcapinfo xterm* ti@:te@

    Dann braucht man sich fuers zurueck scrollen garnicht umgewoehnen und kann weiterhin Shift PageUp/PageDown benutzen.

  3. Bevor du dich an screen gewöhnst, schau dir nochmal tmux an. Macht prinzipiell das gleiche, ist aber in einigen Punkten fortgeschrittener.

  4. Ich nutze screen auch sehr gerne, bereits seit Jahren. Werde mir aber tmux mal anschaun. Öfter mal was neues 🙂

    Noch n kleiner Tipp am Rande für screen.
    Ich habe manche Prozesse in einer Screensitzung laufen welche ich 1. Überwachen möchte und 2. eventuell Befehle an die Session schicken möchte.
    Dafür bastel ich mir gerne ein Startskript für den jeweiligen Prozess mit folgenden Screenoptionen:
    screen -A -m -d -S TS3 /PfadzumProgramm/ts3server_linux_amd64
    echo „TS3 Server gestartet auf screen \“TS3\““

    Wobei das „TS3“ für einen Screennamen steht. Bekommt man natürlich auch mit screen -ls raus, aber so bekomme ich ne kleine Rückmeldung. Die Screensitzung wird im Hintergrund mit dem Namen gestartet und der Prozess läuft dort drin.

    Gruß
    Thorsten

  5. Kann allen anderen vorher schon zustimmen was tmux angeht. Eigentlich sollte jeder jetzt noch How-Tos zu screen veröffentlicht gesteinigt werden. Wer noch kein Screen kann sollte garkeine Zeit aufwenden das zu lernen, sondern es gleich richtig machen und tmux nehmen.

  6. Und wer’s dann noch bissl bunt und so mag nimmt byobu (das seit 5.irgendwas auch tmux als Backend verwendet aber auch auf screen umgestellt werden kann)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.