Crontab führt script nicht aus

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
spryder
User
Beiträge: 9
Registriert: Dienstag 2. April 2019, 20:03

Hallo

Ich habe folgendes Problem, ich habe mir ein kleine Script in Python geschrieben welches ich gerne zu jeder vollen Stunde ausführen möchte.
Nun habe ich unter sudo su crontab -e einen Cronjob angelegt
0 * * * * /usr/bin/python3 /home/sript.ph
Nur leider wird dieses nicht ausgeführt und ich weil leider nicht so ganz warum. ich bin jetzt kein Programmierer und baster mehr als ich schreibe :lol:

Vielen Dank vorab
Benutzeravatar
__blackjack__
User
Beiträge: 13102
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@spryder: Das liegt wirklich im `/home`-Verzeichnis? Und endet mit `*.ph`? Und ``sudo su``? Was sagt das Log vom crond denn dazu?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und heißt sript?
spryder
User
Beiträge: 9
Registriert: Dienstag 2. April 2019, 20:03

__deets__ hat geschrieben: Dienstag 14. Juni 2022, 22:19 Und heißt sript?
tut mir leid habe das c verfehlt :D

Das script.py liegt in home/pi/script.py, die Sache ist auch das wenn ich das direkt im Terminal eingebe dann wird das script ausgeführt.
Also mit
python3 /home/pi/script.py
Via Crontab geht es komischerweise nicht, ich habe was gelesen mit Rechte Vergabe und die Datei ausführbar machen mit chmod +x?

Über Google habe ich rausgefunden man soll als sudo den Crontab -e ausführen mit das script ausgeführt wir.
__blackjack__ hat geschrieben: Dienstag 14. Juni 2022, 21:25 @spryder: Das liegt wirklich im `/home`-Verzeichnis? Und endet mit `*.ph`? Und ``sudo su``? Was sagt das Log vom crond denn dazu?
natürlich ist es eine .py Datei leider hatte ich kleine Tippsfehler :oops:
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Braucht Dein Skript wirklich root-Rechte?
Das einfachste wäre, die Standardausgabe in eine Datei umzuleiten, um die Fehlermeldungen lesen zu können:

Code: Alles auswählen

0 * * * * /usr/bin/python3 /home/pi/script.py >>/home/pi/script.log &2>1
spryder
User
Beiträge: 9
Registriert: Dienstag 2. April 2019, 20:03

Nein ich denke nicht das es root Rechte braucht das es nur ein pyautogui script ist welches automatisiert einige befehle abarbeitet.

Ich habe deinen Code 1:1 übernommen leider bleibt die Log Datei leer.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

pyautogui?
Grafische Oberfläche?
Mein Wissen über Linux mit einer Oberfläche ist etwas eingerostet, aber dann solltest du mal schauen, ob cron überhaupt Dinge ausführen kann, die mit dem X-System zu tun haben - und wenn ja, was man dafür tun muss. Denn das Script wird ja nicht automatisch in der grafischen Umgebung gestartet.

Ggf. bietet auch das Desktop-Environment eine Möglichkeit an, Scripte periodisch auszuführen, die eine grafische Oberfläche brauchen.
Benutzeravatar
Dennis89
User
Beiträge: 1155
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

bin gerade nur noch am Handy, aber im Falle eines GUI sollte dich das Stichwort „*.desktop -Datei“ auf den richtigen Weg bringen.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Nebenfrage: Was automatisiert das Skript denn? GUIs sind eigentlich dafür gedacht, von Menschen bedient zu werden. Oft gibt es zur Automatisierung bessere Lösungen, als eine menschliche Benutzung zu simulieren, insb. unter Linux/Unix.
Benutzeravatar
hyle
User
Beiträge: 96
Registriert: Sonntag 22. Dezember 2019, 23:19
Wohnort: Leipzig

@spryder
Du musst in dem Fall angeben auf welchem Ausgabegerät das Skript arbeiten soll. Die Standardausgabe wäre DISPLAY=:0, falls die Ausgabe an einem weiteren Monitor oder dem DSI-Port sein sollte, dann könnte es auch DISPLAY=:1 sein. Am besten kann man das per SSH testen, da muss man nicht immer eine Stunde warten. :D

Also:
crontab -e (ohne sudo!)

Code: Alles auswählen

0 * * * * DISPLAY=:0 /usr/bin/python3 /home/pi/script.py
Alles was wir sind ist Sand im Wind Hoschi.
spryder
User
Beiträge: 9
Registriert: Dienstag 2. April 2019, 20:03

nezzcarth hat geschrieben: Donnerstag 16. Juni 2022, 10:43 Nebenfrage: Was automatisiert das Skript denn? GUIs sind eigentlich dafür gedacht, von Menschen bedient zu werden. Oft gibt es zur Automatisierung bessere Lösungen, als eine menschliche Benutzung zu simulieren, insb. unter Linux/Unix.
Es soll auf dem geöffnet Browser einige Klicks ausführen und die Seite regelmäßig aktualisieren. Hättest du da eine andere Idee dies umzusetzen?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Warum muß der Browser geöffnet sein? Cronjobs laufen ja im Hintergrund. Kannst Du das, was Du da machen willst, nicht mit requests lösen?
spryder
User
Beiträge: 9
Registriert: Dienstag 2. April 2019, 20:03

Sirius3 hat geschrieben: Freitag 17. Juni 2022, 16:48 Warum muß der Browser geöffnet sein? Cronjobs laufen ja im Hintergrund. Kannst Du das, was Du da machen willst, nicht mit requests lösen?
bestimmt wenn ich wüsste wie :lol: :lol:
spryder
User
Beiträge: 9
Registriert: Dienstag 2. April 2019, 20:03

So ich habe es jetzt geschafft und es klappt für meine Zwecke wunderbar.

Ich habe mein script wie von @hyle beschrieben im crontab mit dem Zusatz "DISPLAY=:0" automatisiert.

Vielen dank nochmal an alle für eure Hilfe
Antworten