cron.daily: Python file startet nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin,

    ich möchte ein Python Programm in Cron.hourly oder auch Cron. daily starten.

    Habe es in /etc/cron.hourly kopiert und mit sudo chmod +x abfragedaily.py ausführbar gemacht.

    Es startet aber nicht.

    Manuell kann ich es mit sudo python in dem Ordner starten.

    Muss mein Programm irgendwelche besonderen Inhalte haben?

  • Benenne das Script um in "abfragedaily" ohne Extension. Der Punkt im Dateinamen ist für run-parts ein unerlaubtes Zeichen und deswegen wird eine Datei mit Endung dort ignoriert.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • ... woran merke ich das: Das Script soll die Abfragewerte in zwei Dateien schreiben - und das ist nicht erfolgt ;.((

    .. Eintrag in der "Cron.hourly":

    Hatte gelesen, dass man nur das script "abfragehourly.py in /etc/cron.hourly (.daily) einkopieren braucht. Das habe ich auch gemacht. Jetzt nach dem Hinweis von llutz umbenannt in abfragehourly (ohne Extension). Jetzt muss ich die Stunde noch abwarten.

    Das Script habe ich angehängt. Für das Hochladen wieder mit .py.

    abfragedaily.pyabfragedaily.pyBitte keine Kommentare bezügl. der absoluten Werte für die Abfrage in der HTML-Seite. Ich weiß das HTML-Parsing eigentlich besser ist, aber ich lese nur diese Seite aus und bei der stehen die Werte immer an der gleichen Stelle. Wenn ich andere auf dieser Seite brauche, bekomme ich sie recht schnell durch Eingrenzen der Bereiche.

  • Hallo,

    der aktuelle Weg wäre, dass über eine systemd Timer Unit zu machen. Vorteil: die kriegst das Logging automatisch ins Journal von systemd, was die Fehlersuche stark vereinfacht.

    Warum hat das Skript print-Statements, wenn es automatisiert im Hintergrund laufen soll?

    Du verwendest außerdem Python 2, was seit dem 1.1.2020 ohne Support durch die Entwickler von Python ist. Du solltest auf Python 3 umstellen, was im gegebenen Fall kein großer Akt sein sollte.

    Die Klammern in den Zeilen 9, 12-14 und 18 sind überflüssig.

    Dateinamen setzt man mit dem pathlib Modul zusammen, nicht mit + oder so.

    print ist in Python 2 ein Statement und braucht keine Klammern.

    Gruß, noisefloor

  • Hallo,

    • w/ des Timers bleibe ich (als Anfänger) lieber bei Cron (never change my running system ;)
    • die print-Anweisungen werden auskommentiert, sie helfen mir vorübergehend nur zu zeigen, ob meine gewünschten Wert geholt werden.
    • wie stelle ich denn auf Python 3 um? Wenn ich Python übe, benutze ich Thonny. Das zeigt mir beim Prompt immer Python 3.7.3 an? Eine Eingabe "python" zeigt mir 2.7.16 und Eingabe Python3 auch python 3.7.3?
  • Hallo,

    Zitat

    w/ des Timers bleibe ich (als Anfänger) lieber bei Cron (never change my running system

    Falsche Einstellung. Du setzt auf eine alte / veraltet Technik und nutzt die Ausrede "Anfänger" als Grund, nichts dazu lernen zu wollen / besser zu machen. Fazit: so kommst du niemals weiter. Aber gut, deine Entscheidung.

    Zitat

    wie stelle ich denn auf Python 3 um?

    Indem du das Skript so schreibst, dass es fehlerfrei unter Python 3 ausgeführt wird?

    Der Shebang in der ersten Zeile besagt, dass das Skript mit Python2 ausgeführt wird WENN du es direkt ausführst. Die Shebang wird dann ignoriert, wenn du das Skript via `python3 name_des_skripts.py` (Python 3) oder `python names_des_skripts.py` (Python 2) ausführst. Ob du den Shebang jetzt wirklich brauchst oder einfach nur ein C&P Fehler ist können wir nicht beurteilen.

    Welche Python-Version Thonny benutzt kann man AFAIK irgendwo einstellen. Da ich Thonny nicht nutze kann ich dir da nicht mehr zu sagen.

    Gruß, noisefloor

  • .. cron vs systemd/timer:

    habe mir Dokumentationen zu timer angeschaut. Für eine so einfache Aufgabe wie einmal am Tag das Script zu starten, scheint mir cron die deutlich einfachere Variante zu sein.

    .. ich nehme an, mein Thonny verwendet Python3. Dafür spricht, dass der Prompt 3.7.3 zeigt und ein testscript mit "import Tkinter" (wie in P2) einen Fehler produziert. import tkinter (wie in P3) dagegen läuft. Meine beiden Scripte laufen ja auch, insofern bin ich wohl auf dem richtigen Weg, wenn ich thonny benutze.

    Insgesamt also: Vielen Dank

Jetzt mitmachen!

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