Python Skript im Hintergrund weiterlaufen lassen (Linux, MacOS) | nohup

Wenn wir ein Python Skript z.B. über das Terminal starten, dann läuft das Skript immer nur so lange, bis wir das Terminal-Fenster schließen. Ich habe hier z.B. ein kleines Python Skript geschrieben, das mir permanent zufällige Zahlen anzeigt. Und das Skript läuft auch so erstmal ganz gut. Wenn ich das Skript starte, dann könnt ihr hier oben sehen, wie ständig neue Zahlen hereinflattern. Wenn ich allerdings jetzt mein Terminal schließe, dann läuft mein Programm nicht weiter.

Glücklicherweise gibt es aber einen praktischen Befehl, der uns genau für dieses Problem die Lösung bietet. Und der heißt nohup. Der wird normalerweise dafür verwendet, um Prozesse auf Servern weiterlaufen zu lassen, auch wenn z.B. die Verbindung zum Server abbricht. Aber er löst eben auch unser kleines Python Problem.

Ich muss dafür nur eine Sache machen. Ich starte mein Skript ja normalerweise mit dem Befehl python3 meinskript.py. Und vor diesen Befehl schreibe ich jetzt einfach das Wörtchen nohup.

nohup python3 mein_skript.py

Wie ihr seht läuft mein Programm jetzt wieder. Und wenn ich jetzt mein Fenster schließe, dann läuft das Programm ebenfalls weiter. Und damit haben wir eigentlich schon die Lösung gefunden.

Blöd ist nur, dass das Programm jetzt erstmal ewig im Hintergrund weiterlaufen würde. Aber es gibt natürlich einen Befehl, wie wir unser Programm trotzdem noch beenden können. Dazu lassen wir uns zunächst einmal die Prozesse auflisten, die gerade über unserem Benutzer laufen.

ps -U Chris | grep mein_skript.py

Und um jetzt meinen Prozess zu beenden, nutzen wir den Befehl kill.

Der besteht in seiner einfachsten Form aus zwei Teilen, nämlich dem Wort kill und der ID des Prozesses, den wir beenden wollen.

kill 11486

Ja und so einfach kann man also Prozesse wie Python-Skripte im Hintergrund weiterlaufen lassen. Und damit haben wir es für heute geschafft.