Cronjob-Einmaleins
Wo kann man die Cronjob-Dateien finden?
Um Cronjob-Angaben zu bearbeiten öffnet man eine Konsole (Kommandozeile) und gibt den Befehl crontab -e ein. Crontab ist sozusagen eine Liste aller geplanten Befehle. Durch crontab -e wird die eigene Crontab-Datei in den Standard-Editor geladen, wo sie bearbeitet werden kann.
Möchte man ein bestimmtes Programm regelmäßig jeden Tag oder jeden Monat ausführen, kann man es auch einfach in einen der Cron-Order kopieren. Die Cron-Verzeichnisse findet man unter /etc/cron.daily and /etc/cron.monthly.
Format der Crontab-Datei
In der Crontab-Datei wird der gewünschte Ausführungszeitpunkt für jeden Befehl angegeben.
[Minute] [Stunde] [Monatstag] [Monat] [Wochentag] [Befehl]
Die ersten fünf Felder stellen Zeitangaben dar und können folgende Werte enthalten. Außerdem kann jedes Feld auch einen * enthalten, der soviel bedeutet wie "jedes Mal".
- [Minute]: 0-59
- [Stunde]: 0-23
- [Monatstag]: 1-31
- [Monat]: 1-12
- [Wochentag]: 0-7 (where 0 and 7 represent sunday!)
- [Befehl]: The command or script you want to run.
Beispiele für Crontab-Angaben
0 12 * * 1 /root/myscript.sh
Das erste Feld gibt an, dass das Script in der Minute "0" (also zur vollen Stunde) ausgeführt werden soll. Im zweiten Feld wird der Wert für die Stunde auf "12" gesetzt, das Script soll also Mittags starten. Im dritten Feld wird der Monatstag auf "jedes Mal" gesetzt, wodurch das Script jeden Tag ausgeführt wird. Im vierten Feld wird der Monat ebenfalls auf jedes Mal gesetzt, das Script also in jedem Monat ausgeführt. Im fünften Feld wird der Wochentag auf "1" gesetzt, das Script wird also nur am Montag ausgeführt.
Weitere Crontab-Angaben
Es ist mit Cron aber nicht nur möglich, Scripte an bestimmten Minuten oder Tagen zu starten. Auch angaben wie "alle fünf Minuten" oder "jeden zweiten Tag" sind möglich. Hierzu wird die Angabe der Zeiten ein wenig erweitert.
*/5 * */2 * * /root/myscript.sh
Durch die Angabe "*/5" wird festgelegt, dass das Script "alle fünf Minuten" ausgeführt werden soll. Die zweite Angabe legt wieder fest, dass das Script "zu jeder Stunde" ausgeführt wird. Danach steht die Angabe für den Tag "*/2", wodurch das Script nur an jedem zweiten Tag gestartet wird. Die letzten beiden Zeitangaben sind wieder die bereits bekannten "jeder Monat" und "jeder Wochentag".
10 3,9,15,21 */3 12 1-5 /root/myscript.sh
Nun beginnt es ein wenig kompliziert auszusehen, ist es aber nicht. Schritt für Schritt: Dieses Script wird jeweils 10 Minuten nach der vollen Stunde ausgeführt. Aber nur zu den Stunden 3, 9, 15 und 21, also um jeweils 3:10 nachts, 9:10 morgens, 15:10 nachmittags und 21:10 abends. Jedoch wegen der Angabe "*/3" nur an jedem dritten Tag, und wegen der "12" nur im Monat Dezember. Die letzte Zeitangabe schränkt außerdem ein, dass das Script nur von Montag bis Freitag gestartet wird. Man kann mit Cronjobs also sehr genau bestimmen, wann ein Befehl ausgeführt werden soll, und nach kurzer Lernphase ist auch der Syntax für die Zeitangabe gut verständlich.
Besondere Kommandos für Cronjobs
In der Crontab-Datei können außerdem noch einige besondere Zeitangaben angegeben werden, so dass Scripte oder Programme zu bestimmten Ereignissen oder Funktionen des Computers gestartet werden können. Hier eine Liste diese besonderen Crontab-Zeitangaben.
@reboot ~/playmusic.sh
Einige der möglichen besonderen Zeitangaben oder Ereignisangaben sind:
@rebootFührt einen Befehl aus, wenn der Computer neu gestartet wurde.@yearlyVereinfachte Angabe, um einen Befehl einmal pro Jahr auszuführen. Das Gleiche wie* * * */12 *.@monthlyVereinfachte Angabe, um einen Befehl einmal pro Monat auszuführen.@weeklyVereinfachte Angabe, um einen Befehl einmal pro Woche auszuführen. Das Gleiche wie* * * * */7.@dailyVereinfachte Angabe, um einen Befehl einmal pro Tag auszuführen.@hourlyUnd zu guter Letzt, die vereinfachte Angabe, um einen Befehl einmal pro Stunde auszuführen.
