Cronjobs auf dem Raspberry Pi erstellen und einrichten
Mit Hilfe von Cronjobs ist es dem Anwender möglich, Befehle regelmäßig oder zu einem bestimmten Datum und gewünschter Uhrzeit auszuführen.Denkbare Anwendungen wären zum Beispiel:
- Shutdown des Pi um Mitternacht und updaten der Pakete
- Backuperstellung jeden morgen
- Schaltung von Funksteckdosen zu bestimmten Zeiten (Heimautomation allgemein)
Cronjob erstellen
Grundsätzlich lässt sich ein Cronjob auf folgende Weise über die Konsole (Bash) erstellen:1 sudo crontab -e |
Nun sollte sich eine Datei im Editor öffnen, in der man den Cronjob am Ende einfügen kann
Der Cronjob sollte in folgendem Format erfolgen:
1 * * * * * /Befehl/ |
Erklärung der Sterne:
1 Stern 1 * | Minuten von 0-60 2 Stern 2 * | Stunden von 0-24 3 Stern 3 * | Tage von 1-31 eines Monats 4 Stern 4 * | Alle Tage bestimmter Monate von 1-12 5 Stern 5 * | Wochentage von 0-7 (0&7 beide für Sonntag) |
Um Cronjobs z.B täglich, stündlich etc auszuführen gibt es vordefinierte Variablen
1 @reboot | nach Neustart 2 @hourly | stündlich 3 @daily | täglich 4 @weekly | wöchentlich 5 @monthly | monatlich 6 @yearly |jährlich |
Beispiele in der Anwendung
Python Skript beim Reboot ausführen1 @reboot python /home/pi/MeinSkript.py |
Python Skript jeden Tag um 6:30 ausführen
1 30 6 * * * python /home/pi/MeinSkript.py |
Python Skript jeden Tag um 6:15, 7:15, 8:15, 9:15 und 10:15 Uhr ausführen
1 15 6-10 * * * python /home/pi/MeinSkript.py |
Python Skript am 1. Januar ausführen
1 0 0 1 1 * python /home/pi/MeinSkript.py |
GPIO um 10:00 Uhr schalten
1 00 10 * * * sudo gpio -g write 18 1 |
Funksteckdose um 6:00 Uhr schalten
1 00 6 * * * sudo /home/pi/raspberry-remote/./send 11010 1 1 |
Cronjobs mit PHP ausführen
Will man Cronjobs auf dem Raspberry Pi über PHP erstellen, kann dies mit folgedem Befehl innerhalb eines PHP-Code erfolgen:1 exec('echo " * * * BEFEHL" | crontab -'); |
Beispiel beim durchführen eines Reboot um 6:00 Uhr
1 exec('echo " 00 6 * * * sudo reboot" | crontab -'); |
Hinweis
Man muss jedoch beachten, dass der EXEC Befehl nicht vom Provider bzw. Server gesperrt ist.
Hier gibt es weitere Informationen zum EXEC Befehl.
Weitere Befehle
Cronjobs auflisten1 sudo crontab -l |
Cronjobs löschen
1 sudo crontab -r |
Logfile (Fehlersuche bei Nichtausführung)
1 sudo nano /var/log/syslog |