Hallo liebe Python Fans,
Mein Problem ist Folgendes:
Ich möchte mein Skript im Hintergrund laufen lassen und das auf Linux und Windows. Wichtig ist dabei, dass wenn ich mich per SSH Verbindung abmelde, das Skript weiter im Hintergrund läuft.
Skript:
Es geht dabei um ein Script welches Informationen von Druckern abfragt und in eine Datenbank schreibt. Dieses Skript befindet sich auf einem Server und soll 24/7 laufen.
Mir ist bekannt, dass auf Linux durch Anhängen von '&' an den Skriptnamen, das Skript im Hintergrund läuft, aber auch nachdem ich mich wieder abgemeldet habe? Im Internet ist leider von Beidem die rede.
Ich wurde ebenfalls auf das Modul subprocess verwiesen. Wenn ich dort aber ein Subprozess starte ist er nur so lange aktiv, wie das Skript gestartet ist. Das bringt mir aber wenig, weil das Skript mit dem ich den Subprozess erstelle nun angezeigt wird.
Wie schaffe ich es also mit möglichst keinem extra Modul, das Skript beim Aufrufen sofort in den Hintergrund zu stellen?
Vielen Dank schonmal!
Script im Hintergrund starten
Das Problem heisst unter Linux "daemonisieren", und kann hiermit geloest werden:
http://pypi.python.org/pypi/python-daemon/
Und fuer Windows musst du einen Service schreiben. Gab's auch hier schonmal nen Thread zu:
http://www.python-forum.de/viewtopic.php?p=52866
http://pypi.python.org/pypi/python-daemon/
Und fuer Windows musst du einen Service schreiben. Gab's auch hier schonmal nen Thread zu:
http://www.python-forum.de/viewtopic.php?p=52866
Für Linux kannst du nohup verwenden.Moneyman hat geschrieben:Mir ist bekannt, dass auf Linux durch Anhängen von '&' an den Skriptnamen, das Skript im Hintergrund läuft, aber auch nachdem ich mich wieder abgemeldet habe?
Code: Alles auswählen
nohup python script.py parameter &
Code: Alles auswählen
nohup python script.py parameter > /dev/null 2> /dev/null &
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Alternativ kannst du auch selbst SIGTERM ignorieren:/me hat geschrieben:Für Linux kannst du nohup verwenden.Code: Alles auswählen
nohup python script.py parameter &
Code: Alles auswählen
import signal
signal.signal(signal.SIGTERM, signal.SIG_IGN)
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte