Wer kompletten Zugriff auf den Webserver hat, kann wiederkehrende Aufgaben von dem übernehmen lassen. Der Linux-Daemon Cron lässt sich ähnlich wie ein Videorekorder programmieren und kann zum Beispiel Emails verschicken, Daten sichern oder Seiten aktualisieren. Ist auf dem Server bereits ein Programm wie Webmin installiert, lassen sich die Cronjobs dort wie viele andere Einstellungen auch direkt über den Browser eintragen. Andernfalls muss mit Linux-Konsole und SSH-Login auf dem Server gearbeitet werden. Der Cron-Daemon wird dabei dann mit dem Befehl “crontab -e” gestartet.
Der Cronjob wird dabei mit fünf Zahlen und der auszuführenden Aktion definiert. Kommentarzeilen werden mit der Raute “#” eingefügt – wenn man eines der Datums-Felder nicht benötigt, setzt man einen Stern ein. Die Zahlen definieren das Datum oder den Wiederholungszeitraum: Minute (0-59), Stunde (0-23), Tag (1-31), Monat (1-12) und Wochentag (0-6). So lässt sich die genaue Uhrzeit oder ein Datum angeben – oder etwas stündlich, täglich, wöchentlich oder monatlich ausführen, wenn man den Zeitraum so einstellt.
Cronjob einmal pro Minute:
* * * * * /home/user/cronjob.sh
Cronjob einmal pro Stunde
1 * * * * /home/user/cronjob.sh
Cronjob alle 10 Minuten
1,11,21,31,41,51 * * * * /home/user/cronjob.sh
Cronjob einmal am Tag:
0 0 * * * /home/user/cronjob.sh
Alternative Angaben für den Cronjob: Stündlich, täglich, nach Neustart…
Statt der Angabe von Datum oder Zeit lassen sich wiederkehrende Aufgaben aber auch mit den folgenden Begriffen ausführen:
@reboot
Der Cronjob wird bei jedem Neustart ausgeführt
@yearly
Der Cronjob wird einmal im Jahr (am 1. Januar) ausgeführt
@monthly
Der Cronjob wird einmal im Monat (am ersten Tag eines Monats) ausgeführt
@weekly
Der Cronjob wird einmal in der Woche ausgeführt
@daily
Der Cronjob wird einmal am Tag ausgeführt
@hourly
Der Cronjob wird einmal pro Stunde ausgeführt
Cronjob Beispiele
# Email am 2. und am 22. eines jeden Monats
0 0 2,22 * * echo "Tante Helga anrufen" | mail [email protected]
Dieser Cronjob verschickt jeden 2. und 22. des Monats eine Email mit der Nachricht “Tante Helga anrufen” an die angegebene Email-Adresse. Soll das jede Stunde passieren, genauer jede erste Minute einer Stunde, würde der Cronjob so aussehen:
# Email einmal pro Stunde
1 0 0 * * echo "Tante Helga anrufen" | mail [email protected]
oder:
# Email einmal pro Stunde
@hourly echo "Tante Helga anrufen" | mail [email protected]
Möchte man sich jedes Jahr an bestimmte Geburtstage erinnern lassen, hilft der Cronjob auch hier:
# Email jedes Jahr am 3. Oktober
0 0 3 10 * echo "Michi hat Geburtstag!" | mail [email protected]
Zum Verwalten der Webseite empfiehlt es sich, bestimmte PHP oder CGI-Skripte anzulegen, die per Cronjob nachts gestartet werden und gewünschte Datei-Aktionen ausführen können. So wird immer um 04:30 das Skript update.php gestartet:
# update.php ausfuehren
30 04 * * * lynx -dump http://www.domain.de/update.php
Soll nach einem Neustart des Rechners immer wieder ein spezielles Programm oder Skript gestartet werden, geht das mit dem Befehl “@reboot”:
# Skript nach Neustart automatisch starten
@reboot sh /home/pi/neustart.sh
Aber auch normale Linux-Konsolen-Befehle, wie das Löschen oder Kopieren von Dateien lassen sich mit einem Cronjob zeitgesteuert ausführen.
Root-Cronjob und User-Cronjob
Jeder User hat eine eigene Cron-Tabelle, deren Befehle mit den Rechten des jeweiligen Users ausgeführt werden. Möchte man Befehle als “Superuser”, also mit Root-Rechten, ausführen, ist es am besten, die Befehle in die Cron-Tabelle des Root-Users zu schreiben. Dazu meldet man sich als Super-User an (auf dem Raspberry Pi geht das so!) und gibt dann den Befehl “crontab -e” ein: Jetzt bearbeitet man die Root-Cronjobs, die auch mit Root-Rechten ausgeführt werden.