7. September 2009, 20:05
Um einen zeitgesteuerten Aufruf / Start eines Scriptes oder Programmes unter Linux auszulösen (unter Linux heisst dies dann cronjob), bedint man sich der Crontab (so heißt im übrigen auch das Programm welches diese Crontabeinträge nachher abarbeitet). Jeder User hat so eine, mit die Wichtigste ist jene, welche sich unter /etc/crontab befindet. Hier schreibe ich fast alle Cronjob´s rein die auf meinem System laufen sollen, also genau solche Jobs wie SQL Datenbankdumps, Datensicherungen, Dienstneustarts, Benachrichtigungsscripts über Systemupdates, etc.
# m h dom mon dow user command
17 * * * * root /usr/local/cronjob1.sh
25 6 * * * root /usr/local/cronjob2.sh
Oben habe ich mal die ersten 3 Zeilen aus meiner Crontab eingestellt… Wie man erkennen kann, teil sich jeder Eintrag / Cronjob für eine Aufgabe in viele Spalten. In dem erstem 5 Spaltigen Bereich, welcher die Zeiten steuert, zu denen der Cronjob ausgeführt werden soll, stehen zuerst die Minute(n), dann die Stunde(n), der Tag, der Monat und der Wochentag. In der nächsten Spalte steht der Benutzer unter dem der Cronjob ausgeführt werden soll, gefolgt von dem Aufruf des zu startenden Programmes inklusive aller Optionen.
Die Crontab eines normalen Benutzers sieht etwas anders aus
# m h dom mon dow command
17 * * * * /usr/local/meinscript --optionen
Quasi das Gleiche, jedoch ohne die Spalte vom Benutzer / User, da normale Benutzer nur unter ihrem eigenem Namen Cronjob´s starten dürfen. Auch editiert der Benutzer seine Crontab nicht mit der /etc/crontab, sondern mit dem Kommando “crontab -e”. Ansehen kann man sich seine Cronjob´s mittels “crontab -l”. Dieser Weg ist dem meinem auch eindeutig zu bevorzugen!
Um diesen doch sehr gewöhnungsbedürftigen Sytax mal zu erklären, ein paar Beispiele dazu:
Um ein Script zum Beispiel jede Minute auszuführen müsste der Cronjob wie folgt aussehen:
* * * * * /usr/local/meinscript --optionen
Wenn das Script alle 15 Minuten laufen soll, also zu jeder 15ten Minute und jeder Stunde, sähe der Cronjob so aus:
*/15 * * * * /usr/local/meinscript --optionen
Cronjob für ein Script welches genau jeden morgen um 06:00 Uhr ausgeführt werden soll:
0 6 * * * /usr/local/meinscript --optionen
Cronjob um ein Script jeden morgen zwischen 6 Uhr und 9 Uhr alle 15 Minuten zu starten:
*/15 6-9 * * * /usr/local/meinscript --optionen
Cronjob f+r ein Script das genau am Heiligabend um 18 Uhr laufen soll:
0 18 24 12 * /usr/local/meinscript --optionen
Cronjob für ein Scriptdas welches jeden Montag morgen laufen soll:
* * * * 1 /usr/local/meinscript --optionen
Beim letztem Beispiel wird der Wochentag als Zahl angegeben. Gültig hierfür sind die Zahlen 0-7, wobei die 0 und die 7 für den Sonntag stehen – Bitte nicht verzählen!