Hallo, ich habe ein Python-Programm das ohne grafische Oberfläche, ohne Terminal, ohne Ausgaben immer laufen soll. Den Start mache ich jetzt mit einem BatchProgramm: ./<Prgname>.py & disown Wenn es im Hintergrund läuft, geling es mir nur es mit kill -9 <Prozessid> zu beenden. Dieses Ende kann ich aber in Python (anders als CTRL-C) nicht abfangen, um z.B. noch eine Datei zu schließen. Wie mache ich das (Python/ Linux-Dummy)? Gruss, wonk
Python Programm sauber beenden
Anmeldungsdatum: Beiträge: 84 |
|
Anmeldungsdatum: Beiträge: 11250 Wohnort: München |
Ein SIGKILL darf kein Programm abfangen. Aber es hindert dich niemand daran dem Programm ein anderes Signal wie SIGTERM (da kann man sich mit https://docs.python.org/3/library/signal.html austoben) oder SIGINT (führt zu einer KeyboardInterrupt Exception) zu schicken und darauf zu reagieren. Generell würde ich mir überlegen, ob es nicht Sinnvoller ist das Programm mit einer System-Unit zu starten und dann Systemd die Prozesskontrolle zu überlassen, statt das mit disown unkontrolliert im Hintergrund laufen zu lassen. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 84 |
Hallo, danke, der System-Service läuft. Gruss, wonk |
![]() Anmeldungsdatum: Beiträge: 4450 Wohnort: Göttingen |
Falls das Thema damit für Dich erledigt ist, markiere es bitte noch als gelöst. |