Script im if Fall beenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
frannek
User
Beiträge: 33
Registriert: Dienstag 28. Januar 2014, 12:17

Hallo Zusammen,

sicher eine enfache frage aber irgendwie finde ich nicht die passenden Antwort.

Ich habe ein script (monitor.sh), welches ein zweites script (test.py) starten und überwachen soll. Das funktioniert auch ganz gut. wenn ich das zu überwachende script kille, dann startet monitor.sh das script test.py erneut.

Nun möchte ich im test.py allerdings einen if Fall einbauen und das Programm stoppen. Hintergrund: manchmal hängt sich der Com Port auf und nur durch einen restart des Programmes test.py bekomme ich wieder anständige Werte. Allerdings wird durch exit() und quit() auch das monitor.sh script beendet. Wie kann ich damit umgehen und NUR das test.py beenden?

monitor.sh

Code: Alles auswählen

#!/bin/bash
until /test.py; do
    echo "'modbus6' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

test.py

Code: Alles auswählen

    if (list[1] == -99999) or (list[1] == 99999):
          print "Bus error detected. Program terminated... "
          time.sleep(1)
          exit()


Ich hoffe, mir kann jemand zu diesem Thema helfen.


Gruß


Frannek
Zuletzt geändert von Anonymous am Donnerstag 2. März 2017, 12:06, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@frannek: Du hast in Deinem monitor.sh eine until-Schleife, sobald also Dein Pythonprogramm ordnungsgemäß beendet wurde, wird auch die Schleife beendet. Beende Dein Pythonprogramm mit einem Fehler, also Exitcode != 0.
frannek
User
Beiträge: 33
Registriert: Dienstag 28. Januar 2014, 12:17

Perfekt. Super und danke :-) Manches kann so einfach sein ,-) @Sirius3
Antworten