Programm beendet sich trotz rc.local Eintrag

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Community, ich habe mal wieder ein Problem.

    Und zwar habe ich dieses Programm :


    Das ist auch in der rc.local eingetragen und wird auch gestartet beim starten des PIs.
    Jedoch wird das Proogramm nach einer Zeit beendet und das soll es ja jedoch nicht.
    In der rc.local ist es so eingetragen:

    Code
    /home/pi/Alarmsystem/hauptprogramm/zimmer.py &


    Ist in dem Script ein Abschnitt, der dazu führt, dass dies nach unbestimmter Zeit beednet wird ?

    Vielen Dank für eure Hilfe !

    Einmal editiert, zuletzt von Cupblue (2. März 2014 um 13:21)

  • Nein, aber irgendein Fehler kann zum Abbruch fuehren. Aendere mal

    Code
    /home/pi/Alarmsystem/hauptprogramm/zimmer.py &

    in

    Code
    /home/pi/Alarmsystem/hauptprogramm/zimmer.py 2>&1 >/tmp/zimmer.log &


    und sieh dann mal in dem Logfile nach was passiert ist.

    Ausserdem empfehle ich Dir Deinen Klarnamen sowie Deine Telefonnummer aus dem Script zu entfernen bzw zu maskieren ;)

  • Der Eintrag in /etc/rc.local startet das Script nur, das hat aber keinerlei Auswirkungen darauf wie lange es läuft

    Um herauszufinden wieso es sich beendet mußte das Script halt mal selber starten und längere Zeit beobachten. Wenn du solange dein Terminal nicht auf lassen willst würde sich hierfür screen anbieten, zu der session du jederzeit dich wieder verbinden und nachgucken kannst ob das Script noch läuft

    Oder mögliche Fehlerausgaben in eine Logdatei umzuleiten... Siehe dazu >hier< die Beschreibung zur " >/dev/null " Umleitung


    Ohne mir das Script jetzt genauer anzugucken kann ich auf den ersten Blick aber schon mal eins sagen: Eine while True Schleife dreht sich halt nur solange im Kreis solange es True ist, also kein Problem oder Fehler auftritt, denn sonst wechselt es in False und somit trifft die while Bedingungen nicht mehr zu (weil es dann nicht mehr while True ist sondern while False...)

    Da deine "while True" ziemlich groß ist liegt die Vermutung nahe das du dort irgendwo nach einiger Zeit ein Problem hast - vielleicht einzelne Aufgaben in eigene Anweisungen aufteilen und dann debuggen (zB durch print Zeilen einfügen und gucken was zuletzt ausgeführt wurde bevor es gecrasht ist und was hätte danach ausgeführt werden sollen - irgendwo dort muss dann der Hund begraben sein)

    Allgemein solltest du mehr Variablen nutzen da bei dir sehr viel mehrmals wiederholt wird - wie deine Handy# oder "Ich habe regestriert, dass das ...." usw und da "regestriert" falsch geschrieben ist müßtest du jetzt nicht nur eine Variable ändern sondern schätzungsweise 10 Zeilen :D


  • Allgemein solltest du mehr Variablen nutzen da bei dir sehr viel mehrmals wiederholt wird - wie deine Handy# oder "Ich habe regestriert, dass das ...." usw und da "regestriert" falsch geschrieben ist müßtest du jetzt nicht nur eine Variable ändern sondern schätzungsweise 10 Zeilen :D


    Es gibt auch noch andere Dinge die man einfacher machen könnte im Programm. Z.B. nach jedem erfolgreichen if ein continue schreiben. Dann erspart man sich die riesigen geschachtelten if Block am Ende, der dann nur noch zu subprocess.call kollabiert.

  • Schau dir mal dein import-Chaos an!

    Und dann würde ich deine einzelnen "Schritte" in Funktionen packen, um ein wenig den Überblick zu gewinnen. Der Code ist schrecklich.

    Ein Grund für den Abstutz könnte so aus dem Bauch raus sein: gmail.com; denn google mag es nicht, wenn innert 10min mehrere Verbindungen aufgebaut werden.


  • ...Der Code ist schrecklich...


    Ich stimme Dir zu dass man den Code sicherlich übersichlicher und strukturierter schreiben kann. Aber ein jeder hat mal angefangen Code zu schreiben und ist glücklich wenn er das tut was man möchte :shy:

    Ich finde den Code für den Anfang gar nicht schlecht. Wenn der TE sein eigentliches Problem mit dem Programmbeenden gelöst hat (sind ja schon verschiedene Gründe bzw Möglichkeiten das Problem zu identifizieren genannt worden) kann er ja - sofern er Lust hat - sein Programm im Forum in einem anderen Thread vorstellen und nach Tips fragen, wie man es vielleicht etwas anders und übersichlicher codiert um dazuzulernen :)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!