Raspbian Crontab
lima-city → Forum → Heim-PC → Betriebssysteme
-
Hallo zusammen,
ich habe mal eine Frage zum Crontab in Raspbian. Ich musste leider aufgrund eines Softwarefehlers meinen Pi zurücksetzten.
Der Pi hat alle 30 Minuten eine lokale Adresse aufgerufen, welcher ein PHP-Script ausführen soll.
Der ursprüngliche Befehl (hatte zuvor funktioniert) lautet:
30 * * * * curl http://192.168.178.2/external_ip.php
wenn ich
curl http://192.168.178.2/external_ip.php
im Terminal manuell eingebe, dann geschieht auch alles wie es soll. Ich weiß aber nicht, wieso das ganze nicht mehr als Cronjob ausgeführt wird.
Ich habe das ganze jetzt in mehrere Variationen durchgetestet.
Schritt 1: sudo crontab -e
Schritt 2: Am Ende der Datei:
habe ich folgendes alles ausprobiert:
30 * * * * curl http://192.168.178.2/external_ip.php
30 * * * * root curl http://192.168.178.2/external_ip.php
@hourly curl http://192.168.178.2/external_ip.php
@hourly /usr/bin/curl http://192.168.178.2/external_ip.php
Schritt 3: sudo service cron restart
Ein Blick ins Log sagt mir, dass der Cronjob zumindest als User Pi ausgeführt wurde:
Sep 10 11:07:53 raspberrypi cron[352]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:07:53 raspberrypi cron[352]: (CRON) INFO (Running @reboot jobs)
Sep 10 11:09:09 raspberrypi CRON[1390]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Sep 10 11:10:11 raspberrypi cron[344]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:10:11 raspberrypi cron[344]: (CRON) INFO (Running @reboot jobs)
Sep 10 11:12:56 raspberrypi cron[1519]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:12:56 raspberrypi cron[1519]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Sep 10 11:15:51 raspberrypi cron[1578]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:15:51 raspberrypi cron[1578]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Sep 10 11:17:01 raspberrypi CRON[1586]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Sep 10 11:18:36 raspberrypi cron[1663]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:18:36 raspberrypi cron[1663]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Sep 10 11:20:42 raspberrypi cron[1759]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:20:42 raspberrypi cron[1759]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Sep 10 11:23:02 raspberrypi cron[1844]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:23:02 raspberrypi cron[1844]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Sep 10 11:26:59 raspberrypi cron[1901]: (CRON) INFO (pidfile fd = 3)
Sep 10 11:26:59 raspberrypi cron[1901]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Sep 10 11:30:01 raspberrypi CRON[1935]: (pi) CMD (pi curl http://192.168.178.2/external_ip.php)
Sep 10 11:30:01 raspberrypi CRON[1931]: (CRON) info (No MTA installed, discarding output)
Was mir schon helfen würde, wäre eine Option um einen Cronjob manuell auszuführen.
Hat vielleicht Jemand von euch eine Idee?
LG Marvin
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Bei Owncloud in der Doku wird der Cron so eingerichtet, evtl erkennt man daran wie es funktioniert :)
# crontab -u www-data -e */15 * * * * php -f /var/www/owncloud/cron.php
Bei Crons mit curl meinte ich in Erinnerung zu haben das man das die URL in " setzen muss.
Beitrag zuletzt geändert: 10.9.2019 13:25:15 von horstexplorer -
Hallo horstexplorer,
danke für deine rasche Antwort.
Die Syntax ist ja genauso wie bei mir, nur dass du php mit Parameter startest.
Ich weiß auch nicht wieso, aber nach dem 5ten Neustart scheint er jetzt mit folgender Lösung zufrieden zu sein:
@hourly /usr/bin/curl http://192.168.178.2/external_ip.php
Kennst du denn noch zufällig den Befehl, um einen Cronjob manuell auszuführen?
Liebe Grüße
Beitrag zuletzt geändert: 10.9.2019 14:02:38 von marvinkleinmusic -
Ich habe gerade nochmal nachgesehen. meine curl crons laufen mit
curl -k "https://domain.tld/site.php"
-k weil es bei mir das Zertifikat nicht mag und die URL in ", sonst läufts ned.
Zum selbst ausführen wüsste ich jetzt nicht sicher wie das geht. -
marvinkleinmusic schrieb:
Das ist so ja erstmal schon nicht richtig. So (sollte) das ganze jede Stunde auf der dreißigsten Minute ausgeführt werden.(Also um 00:30, 01:30, 02:30 [...]) Wenn du es wirklich jede halbe Stunde(also 00:00, 00:30, 01:00, 01:30 [...]) ausgeführt haben willst, sollte
Der Pi hat alle 30 Minuten eine lokale Adresse aufgerufen, welcher ein PHP-Script ausführen soll.
Der ursprüngliche Befehl (hatte zuvor funktioniert) lautet:
30 * * * * curl http://192.168.178.2/external_ip.php
die richtige Aufforderung sein, sofern es da keine Einschränkungen in Sachen curl-/Netzwerk-Nutzung gibt.(*/30 * * * pi /usr/bin/curl --silent "http://192.168.178.2/external_ip.php"
?) Was du nicht willst, ist curl als root aufrufen - das ist ein erhebliches Sicherheitsrisiko.(Ich weiß, in dem Fall ist es wahrscheinlich "relativ" sicher, aber man sollte es aus Prinzip schon richtig machen.) Richte dir einen Nutzer ein - oder verwende einen bereits existierenden -, der so weit beschränkt ist, dass es grade so funktioniert und trage ihn oben anstelle voniptables
ein. Ich habe pi gewählt, weil das bei mir relativ problemlos funktioniert - ist aber systemabhängig.pi
marvinkleinmusic schrieb:
Ich fürchte, die Option gibt es nicht. Ich wüsste zumindest nichts davon. Man könnte alternativen basteln, welche aber letztenendes nur darauf hinaus laufen, dass man den Befehl manuell heraus sucht und dann startet.
Was mir schon helfen würde, wäre eine Option um einen Cronjob manuell auszuführen.
Zum debuggen lohnt es sich immer, die Ausgabe des Befehls in ein Log zu pipen (über ein angefügtes
) und/oder die Befehle mit Debug-Informationen in ein Bash-Skript zu verpacken, welches dann von crontab aufgerufen wird.(Natürlich sollte man da die Option>> /path/to/temp.log 2>&1
aus curl weg lassen.)--siltent
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage