Diesen Script haben wir dann auf den Raspberry Pi hochgeladen und müssen den jetzt nur noch automatisiert aufrufen lassen.
Was sind Cronjobs und wozu sind die gut?
Cronjobs sind Aufgaben, die man einem System erteilt, die immer wieder in einem bestimmten Intervall ausgeführt werden. Zum Beispiel können durch Cronjobs Tägliche Backups gemacht werden, oder man kann alle 5 Minuten seine E-Mails abrufen. Diese Funktion wird im System von Raspberry Pi (Linux) crontab genannt.
Wir werden in diesem Beitrag lernen, wie wir so einen crontab anlegen und prüfen, ob dieser sogenannte Cronjob ausgeführt wird.
Die crontab-Datei
Um die crontab-Datei bearbeiten zu können, gebt ihr einfach folgendes in die Kommandozeile ein:
crontab -e
Was ihr dort seht könnte euch vielleicht etwas abschrecken, ist in Wirklichkeit jedoch eine sehr übersichtliche Struktur von den Aufgaben, die von eurem Raspberry Pi regelmäßig ausgeführt werden. Ich hole die Beschreibung einmal nach hier, dann können wir das behandeln.
#┌ Minuten
#| ┌ Stunden
#| | ┌ Tag im Monat
#| | | ┌ Monat
#| | | | ┌ Tag der Woche
#| | | | |
1 * * * * /pfad/zum/script.sh
Ich habe das Standardbeispiel einmal vereinfacht. Was seht ihr da? Nur die spalte von Minute ist auf 1 gesetzt. Das bedeutet, dass dieser Script immer ausgeführt wird, wenn die Minute auf der Uhr auf 1 steht. Wenn man anstelle einer Zahl einen Stern (*) eintippt, bedeutet das *egal auf welcher Zahl es steht*. In diesem Fall wird der Script stündlich ausgeführt, denn der Zeiger von der Minute geht nur stündlich auf die 1.
#┌ Minuten
#| ┌ Stunden
#| | ┌ Tag im Monat
#| | | ┌ Monat
#| | | | ┌ Tag der Woche
#| | | | |
* * * * * /pfad/zum/script.sh
Dieses oben gezeigte Beispiel zeigt euch, wie es aussieht, wenn man einen Script minütlich abrufen möchte. Das kommt daher, weil minütlich geprüft wird, ob es Scripte gibt, die ausgeführt werden müssen. Der Computer schaut auf seine Uhr/Kalender und sagt: Minuten? Egal. Stunden? Egal. Monat? Egal. Tag der Woche? Egal. Ausführen!“
Tag der Woche
Unter Tag der Woche könnt ihr einen Wert zwischen 0 und 7 eingeben. Hierbei repräsentieren 0 und 7 Sonntag. Die Restlichen Tage sind normal Montag (0) bis Samstag (6).
Zwei oder mehr Werte für eine Spalte eingeben
Sagen wir mal, da ist ein Arzt, der ein Backup von seinem System. Einmal am Morgen (06:00 Uhr) und einmal nach Feierabend (20:00).
Dann könnt ihr diese Uhrzeiten einfach durch ein Komma getrennt angeben. Die Umsetzung ist wirklich einfach:
#┌ Minuten
#| ┌ Stunden
#| | ┌ Tag im Monat
#| | | ┌ Monat
#| | | | ┌ Tag der Woche
#| | | | |
0 6,20 * * * /pfad/zum/backupscript.sh
Damit das stündlich ausgeführt wird, mussten wir die Minuten auf 0 setzen. Hätten wir ein Sternchen gelassen (*), würde unser Script minütlich um 6 Uhr und um 20 Uhr ausgeführt.
Jede x’te Zeit ausführen
Sagen wir mal ihr habt einen Script, welcher automatisiert eine Quartalsabrechnung für euch fertigstellt. Diesen Script ruft ihr in der gewünschten Zeit auf, indem ihr unter Monat einfach */3 angebt. (steht für alle 3 Monate)
#┌ Minuten
#| ┌ Stunden
#| | ┌ Tag im Monat
#| | | ┌ Monat
#| | | | ┌ Tag der Woche
#| | | | |
0 0 0 */3 * /pfad/zu/quartal.sh
Diesen interval könnt ihr in jeder Spalte anwenden.
Gesonderte Zeitangaben
Ihr habt auch feste Platzhalter, für die es keine Zeit einzugeben braucht. Ihr schreibt dann anstelle der 5 Zahlen, einfach einen Text wie z.B.@reboot eingeben. Das sieht dann so aus:
@reboot /pfad/zu/quartal.sh
Ihr habt auch die Möglichkeit folgende Platzhalter einzutragen:
- @reboot
Bei Systemstart - @yearly
Jährlich - @monthly
Monatlich - @weekly
Wöchentlich - @daily
Täglich - @hourly
Stündlich
Ihr habt jetzt eigentlich schon die Grundlagen zur erstellung eines Cronjobs gelernt. Setzen wir diese nun mit unserem DynDNS Script um.
Unseren Script einsetzen
Falls die Verbindung getrennt wurde, müssen wir die Verbindung wieder herstellen und die crontab Datei mit crontab -e aufrufen. Falls ihr diesen Befehl noch nie ausgeführt habt, wird für euren Benutzer eine crontab-Datei angelegt. Dort könnt ihr alle ausgeklammerten Zeilen entfernen (Strg + Shift + K).
Nun wir angeben, dass unser Script alle 10 Minuten und bei jedem Boot ausgeführt werden muss:
*/10 * * * * python3 /home/pi/Cron/dyndns.py
@reboot python3 /home/pi/Cron/dyndns.py
Wir beenden den Editor (Strg + X) und bestätigen unsere Änderungen. Um unseren Cronjob zu prüfen können wir entweder bis zur nächsten Ausführung warten, oder folgendes in die Konsole eingeben:
crontab -l
Ich hoffe, dass alle von euch in diesem Beitrag etwas gelernt haben. Ich habe das versucht, so verständlich wie möglich zu erklären. Im nächsten Beitrag werde ich den Lesern, deren Hoster kein DynDNS unterstützt etwas entgegen kommen. Wir werden uns mit kostenlosen Anbietern beschäftigen und wie ihr diese auch ohne Script (FritzBox) benutzen könnt.