Firmenbrief

17.05.2011

Tipps vom LIS-Service: Was ist ein Cronjob?


Frage an den Service:

Ich lese immerwieder etwas von "cron". Was ist dieser Cron?

Antwort vom LIS-Service:

Ein Cron ist eine sich wiederholende Aufgabe. Ein Biespiel ist ein Skript, das minütlich / stündlich / täglich / wöchentlich / monatlich immer wieder ausgeführt wird. Cron liest die sogenannte crontab-Datei, um Informationen für seine Arbeit zu erhalten. Standardmäßig liegt diese in /etc/crontab.

Sie können Crons entweder mit Ihrem eigenen Benutzer erstellen oder als root. In unserem Beispiel nutzen wir den root-Account.

Mit dem Befehl "crontab -l" können Sie einsehen, welche Cronjobs bereits eingerichtet sind. Bei einem neu aufgesetztem System erhalten Sie als Antwort "no crontab for root". Wir erzeugen nun mittels "crontab /etc/crontab" eine neue Cron Datei für den Benutzer "root". Hierbei wird die originale Datei /etc/crontab kopiert. Mit dem Befehl "crontab -e" öffnet sich der Editor, den Sie benötigen, um die Datei zu bearbeiten.

Die Felder sehen wie folgt aus:
m h dom mon dow user  command

Die Zeit- und Datumsfelder sind:

(m) Minute           0-59
(h) Stunde           0-23
(dom) Tag-des-Monats   1-31
(mon) Monat            1-12 (oder Namen, siehe unten)
(dow) Wochentag        0-7 (0 oder 7 ist Sonntag oder Namen)

Ein Feld kann mit einem Stern (*) gefüllt werden, was immer für "Erster-Letzter" steht. Ebenso sind Zahlenbereiche wie beispielsweise 1-6 (Monat) erlaubt. Dies würde bedeuten, dass der Cronjob in den Monaten 1,2,3,4,5,6 ausgeführt wird.

Weiterhin können Sie Bereiche festlegen, wie beispielsweise "1-3,5-7" (ohne ""). Dies würde bedeuten, dass der Cronjob am 1,2,3 und 5,7,8 (Monat) ausgeführt wird.

Wenn Sie dies etwas abkürzen wollen, können Sie ebenso sogenannte Schrittweiten einführen. Zum Beispiel 0-14/2 würde bedeuten, dass der Cronjob alle zwei Stunden ausgeführt wird. Alternativ wäre 0,2,4,6,8,10,12,14. Wenn Sie alle 2 Stunden am Tag den Cronjob ausführen lassen möchten, schreiben Sie einfach */2.

Außerdem können Sie bei Monaten den Monatsnamen mit den ersten drei Buchstaben beginnend angeben, zum Beispiel jan, feb, mar. Zu beachten ist, dass bei Bereichen oder in Listen keine Namen erlaubt sind.

Hier ein praktisches Beispiel:

5 1 * * * /usr/local/bin/run-backup

bedeutet, dass der Cronjob das Script /usr/local/bin/run-backup fünf Minuten nach 1:00 Uhr morgens ausgeführt. Zu dieser Zeit findet also die tägliche Datensicherung statt.