ubuntuusers.de

Python Programm sauber beenden

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

wonkwonk

Anmeldungsdatum:
1. Mai 2014

Beiträge: 84

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

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

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.

wonkwonk

(Themenstarter)

Anmeldungsdatum:
1. Mai 2014

Beiträge: 84

Hallo, danke, der System-Service läuft. Gruss, wonk

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4450

Wohnort: Göttingen

Falls das Thema damit für Dich erledigt ist, markiere es bitte noch als gelöst.

Antworten |