Skript läuft nur einen Tag

  • Hallo,

    ich wollte mir ein Skript schreiben, dass alle 15 Minuten ein Foto macht, so lange es zwischen 9 Uhr und 22 Uhr ist. Das klappt auch wunderbar am Tag, an dem ich das Skript starte.

    Am nächsten Tag scheint es aber nicht mehr zu klappen. Heute, Gestern und vorgestern wurde bis 12 Uhr noch kein Foto gemacht. Wenn ich das Skript stoppe und wieder starte klappt es wieder. Wo liegt denn wohl mein Fehler?


    Gruß, Tom

  • Keine Ahnung wo der Fehler liegt, aber warum nicht einfach ein Script mit der reinen Aufnahmefunktion und dann ein Cronjob:

    */15 9-21 * * *  /pfad/zum/Fotoscript

    Menschen die keine Ironie verstehen finde ich super!

    Edited once, last by llutz ().

  • Das Programm verursacht nur 100%, wenn die if-Bedingung "False" ist. Also zwischen 22 und 9 Uhr.


    Edit:

    Tillmario such mal im Forum nach apscheduler. Ich mach sowas damit.

    http://apscheduler.readthedocs.io/en/latest/


    Edit 2:

    aber ich gib meinen Vorrednern recht. Das "time.sleep" gehört eine Ebene zurück. ggf. geht es dann, denn auch ich kann es nicht nachvollziehen.

  • Danke für eure Antworten.

    aber warum nicht einfach ein Script mit der reinen Aufnahmefunktion und dann ein Cronjob

    wusste nicht, dass es "alle 15 Minuten" geht. Habe es jetzt aber mal gemacht.

    Funktioniert aber irgendwie nicht.

    sudo nano /etc/crontab

    */15 9-21 * * *  root  /home/pi/Foto_crontab.py unten eingetragen.

    Skript geschlossen bzw. angepasst. sudo reboot Passiert nichts. (Wenn ich das Skript einzeln ausführe klappt es)


    Zwecks Ausporbierens habe ich es auch bei crontab -e eingeragen (ohne root), klappt aber auch nicht. :conf:



  • Hallo,

    kleiner Tipp noch, ich würde die Cron Einträge nicht via nano anlegen sondern mit folgendem Befehl:

    crontab -e

    mit crontab -lkann man sich wiederrum die erstellten Crontabs ansehen.

    Crontabs werden für den Benutzer angelegt, welcher den Befehl ausführt.


    Das python3 gibt den Befehl an mit welchen Programm das Skript ausgeführt werden soll.

    Wenn du im Skript schon Definieren möchtest welches Programm verwendet werden soll, verwendet man einen sogenannten Shebang. Dieser muss an erster Zeile stehen. Bsp. für Python 3:

    #!/usr/bin/python3

    Anschließend muss die Datei noch ausführbar gemacht werden...