Programme so ausführen, dass sie beim Logout nicht beendet werden

Zuletzt geändert von Aysegül Omus am 2026/05/13 16:00

Hier wird beschrieben, wie man in der Rechnerhalle Programme ausführen kann, die nach dem Logout weiterlaufen. Dies geschieht, indem sie auf einem Server gestartet werden, der identisch mit den Rechnern in der Halle konfiguriert ist.

1. Allgemeines

Möchte man im Rahmen seines Studiums mal ein rechenintensives Programm beispielsweise über Nacht laufen lassen, so ist es grundsätzlich problemlos möglich, sofern man die folgenden Punkte beachtet:

  • um sich mit der Lxhalle per SSH zu verbinden, muss die untenstehende Zeile mit Ihrem CIT-Login im Terminalfenster eingegeben werden - Windows-Benutzer finden hier ein How-to, um sich das Programm PuTTY einzurichten, mit dem SSH-Verbindungen im Terminalfenster möglich sind.
ssh CIT-Kennung@lxhalle.cit.tum.de 
  • Damit die Programme die Arbeit anderer Rechnerbenutzer nicht behindern, sollten sie mit einer niedrigen Scheduling-Priorität gestartet werden - dies wird durch den Aufruf von "nice -n 19", wie bei den Beispielen in diesem HowTo erreicht 

2. Beispielskript

Um die Funktionalität der hier vorgestellten Methoden zu demonstrieren, wurde ein kleines Shell-Skript  geschrieben, das nichts anderes tut, als jede Sekunde die aktuelle Uhrzeit und das aktuelle Datum in die Datei  zu schreiben. Dieses Skript repräsentiert ein beliebiges Programm, das auf der Konsole laufen könnte. Das Skript besteht aus folgenden Zeilen:

#!/bin/bash while true do sleep 1 date done >> datum.txt

3. Nohup

Wird ein Programm mit dem nohup-Befehl gestartet, ignoriert es das HUP-Signal, das beim Ausloggen gesendet wird. Dadurch läuft das Programm weiter, auch wenn sich der Benutzer, der es gestartet hat, bereits ausgeloggt hat.

  • Durch die Eingabe von nice -n 19 nohup ./test.sh & wird das Test-Skript gestartet und von der Konsole entbunden (durch &)
  • Ab jetzt wird das Datum in die Datei datum.txt geschrieben, auch nachdem man sich ausgeloggt hat
  • Nach dem Ausführen von nohup wird uns zusätzlich die PID des erzeugten Prozesses mitgeteilt, was nützlich sein kann, um das Programm (falls es nicht von alleine terminiert) mit der kill PID Anweisung zu beenden
  • Jetzt kann im Terminalfenster weitergearbeitet werden - das Terminal kann natürlich auch geschlossen werden, ohne dass das Programm beendet wird
  • Loggt man sich aus und wieder ein, kann man überprüfen, ob in die Datei datum.txt weiterhin geschrieben wird
  • https://xwiki.rbg.tum.de/bin/download/Informatik/Helpdesk/ProgrammeBeimLogoutNichtBeenden/WebHome/nohupTest.png

4. Screen

Der Befehl screen ermöglicht es, im Terminal mehrere screen-Sitzungen zu erstellen, die jeweils bis zu 10 virtuelle Konsolen enthalten können. In diesen Konsolen können Programme gestartet werden, die nach Beendigung der Sitzung im Terminalfenster auch nach dem Logout erhalten bleiben.

 Zunächst werden einige grundlegende Steuerbefehle vorgestellt:

  • screen starting:
    • nice -n 19 screen 
    • eine selbstbenannte Sitzung (hier Sitzung1) durch folgende Befehlseingabe
    • nice -n 19 screen -S sitzung1
  • Es werden zwar am Anfang einige Informationen über das Programm angezeigt, nachdem man jedoch die Leertaste betätigt schaut die Konsole unverändert aus - man hat nun eine Screen-Sitzung gestartet und befindet sich in der ersten virtuellen Konsole
  • eine weitere virtuelle Konsole starten
    • Strg + A und dann C
  • eine virtuelle Konsole schließen
    • Strg + A und dann K
  • zwischen den virtuellen Konsolen wechseln:
    • Strg + A und dann Leertaste
    • Strg + A und dann Zahl zw. 0 und 9 (für die entsprechende Konsole)
  • Verbindung zur aktuellen Sitzung lösen (detach):
    • Strg + A und dann D
    • für eine bestimmte Sitzung (hier Sitzung1): screen -d sitzung1
  • Verbindung zu einer Sitzung wiederaufnehmen (hier Sitzung1)
    • screen -r sitzung1
  • Sitzung beenden
    • Strg + D
    • exit
    • die letzte virtuelle Konsole schließen
  • alle laufenden Sitzungen mit ihren Namen anzeigen (im Bild z.B.: 6561)
    •  screen -ls 
    •  
    • https://xwiki.rbg.tum.de/bin/download/Informatik/Helpdesk/ProgrammeBeimLogoutNichtBeenden/WebHome/screen.jpg
  • alle Tastaturbefehle anzeigen
    • Strg + A und dann ? eingeben
  • Für die vollständige Dokumentation des Screen-Befehls möchte ich auf die Manpages verweisen:    man screen

 Vorgehen bei Benutzung von screen (Befehle siehe oben):

  • Programme starten
    • Terminalfenster aufrufen
    • Screen starten - dadurch ist man automatisch in einer Sitzung, die "Attached" ist
    • Programm ausführen
    • gegebenenfalls neue Konsolen und Programme starten
    • die Verbindung zur aktuellen Sitzung lösen
    • Terminalfenster schließen
  • Programme beenden
    • Terminalfenster aufrufen
  • alle laufenden Screen-Sitzungen anzeigen
    • die gewünschten Sitzungen wiederaufnehmen
    • die Programme in den virtuellen Konsolen beenden (falls sie nicht von selbst terminieren)
    • Die virtuellen Konsolen schließen bzw. die Sitzung beenden
    • Terminalfenster schließen