Nicht jeder Linux-Server hat und braucht eine grafische Oberfläche. Denken wir nur an die ganzen entfernt stehenden Rootserver, die ja mittlerweile aufgrund des Preisverfalls praktisch für jeden erschwinglich sind. Eine grafische Oberfläche ist hier normalerweise nicht notwendig und auch nur in Ausnahmefällen installiert, die freien Ressourcen gibt man meist besser dem Server zum Erfüllen seiner eigentlichen Aufgaben.
Auch auf solchen Servern kommt es vor, daß man Programme startet, die voraussichtlich lange laufen werden, und auch dann weiter laufen wenn die ssh-Verbindung getrennt wird. Normalerweise werden die vom User gestarteten Prozesse vom System beendet, wenn die Verbindung getrennt wird (und sei es nur, weil das Timeout der Fritzbox mal wieder nach 10 Minuten die Verbindung automatisch trennt). Kommt man an den Platz zurück und loggt sich wieder ein, so darf man von vorne beginnen. Oft kann man nicht mal wirklich sagen ob der Prozess regulär beendet wurde weil er seine Arbeit beendet hat oder ob das System ihn beendete.
In solchen Fällen hilft screen, ein GNU Tool, mit dem man virtuelle Konsolen erschaffen und hinterlassen kann, die auch weiterlaufen wenn der User sich abmeldet. Nach einer neuen Anmeldung kann man sich den virtuellen Schirm wieder aufrufen und sehen wie weit der Prozess fortgeschritten ist oder sogar beendet wurde.
Screen installieren
Unter debian / ubuntu ist das wie üblich sehr leicht, unter anderen Linux Distributionen sollte es auch entsprechend verfügbar sein:
root@server:~# apt-get install screen
Screen wird damit automatisch heruntergeladen und installiert.
Virtuelle Konsole starten
Ruft man screen ohne weitere Parameter auf, so wird automatisch eine neue virtuelle Konsole geöffnet, die auf Eingaben wartet. Allerdings kann (und wird) man auch ein Programm angeben, das gleich in dieser virtuellen Konsole ausgeführt werden soll:
root@server:~# screen /pfad/zum/lang/laufenden/programm <weitere parameter>
Das Programm wird gestartet und läuft wie üblich. Ohne das zuvor gestartete Programm nun zu beenden kann man mit der Tastenkombination STRG+A und danach D die virtuelle Konsole verlassen. Das Programm läuft jetzt weiter und man könnte die Verbindung trennen.
Arbeiten mit virtuellen Konsolen
Mit screen -ls kann man sich eine Liste aller aktiven virtuellen Konsolen ausgeben lassen um davon eine auszuwählen und sich damit zu verbinden:
root@server:~# screen -ls
There are screens on:
14545.pts-1.server (Detached)
13052.pts-1.server (Detached)
2 Sockets in /var/run/screen/S-root.
root@server:~#
Möchte man nun eine Konsole wieder nach vorne holen, gibt man screen -dr <Bezeichnung> ein. Wenn nur eine virtuelle Konsole existiert, kann man <Bezeichnung> auch weg lassen, dann wird automatisch die einzig vorhandene virtuelle Konsole aktiviert.