Kann ich ein Python Script automatich neustarten?

4 Antworten

Dies kann man so lösen:

def meinskript():
    while True:
    try:
       ....
    except:
        meinskript()
        return

meinskript()

Immer wenn ein Fehler auftaucht, führt er die Funktion erneut aus und beendet die aktuelle.

Lass es vom Initsystemd starten. Debian 10 sollte systemd nutzen, das kann dann auch service supervisro spielen udn ihn neu starten.

Besser wäre erstmal herauszufinden, wie es zu dem Fehler kommt.


KarlRanseierIII  14.02.2020, 03:07

Whoops, das sollte vom Init-System heißen. da war der Kopf wohl schon beim zweiten Satz :-O.

0
KarlRanseierIII  14.02.2020, 03:39
@verreisterNutzer

Kein Befehl. Du schreibst Dir eine eigene Unit (Service), trägst ein, daß Python mit Deinem Skript als Parameter aufgerufen wird und setzt noch ein Restart=always.

Mehr verrät Dir die Dokumentation, bzw.:

man systemd.service

Du kannst auch nach einem Howto o.ä. suchen.

Ist die Service-Datei fertig, packst Du sie in den richtigen Pfad (siehe Doku) und aktivierst sie, wenn sie beim Systemstart starten soll. Sonst halt manuell mit systemctl starten.

---

man systemd.unit

Sollte die Pfade für vom Nutzer bereitgestellte Units auflisten.

0

OK teste ich aber der Error geht irgendwie nicht zu lösen habe alles gelöscht Neuinstalliert usw. Aber danke teste ich

Du könntest das Script in einer Endlosschleife laufen lassen:

while true; do python3 myScript.py; done

Besser wäre es, die Ursache für den Error zu finden und direkt in dem Python-Script abzufangen.


verreisterNutzer  14.02.2020, 02:59

Ich wollte den Fehler beheben aber es hat was mit den API Servern zu tun die ich nicht besitze deswegen kann ich nix ändern aber danke teste ich aus

0
321QWERTZ123  14.02.2020, 12:32
@verreisterNutzer

Du kannst die Exception/den Error ja einfach in deinem Python-Programm auffangen (try/except) und weitermachen. Das wäre die beste Lösung.

0
verreisterNutzer  14.02.2020, 03:06

Wo soll ich das hinzufügen bei start.sh oder bei den script

0
verreisterNutzer  14.02.2020, 03:28

Ich denke es geht aber wenn ich das mache geht screen nicht weil davor hatte ich screen -AmdS Name python3 Name.py aber das geht nicht mehr

0