- cron
-
Der cron-Daemon ist eine Jobsteuerung von Unix bzw. unixartigen Betriebssystemen wie Linux, BSD oder Mac OS X, die wiederkehrende Aufgaben (cronjobs) automatisch zu einer bestimmten Zeit ausführen kann.
Häufig führt der Cron-Daemon wichtige Programme für die Instandhaltung des Systems aus, wie zum Beispiel Dienste für das regelmäßige Archivieren und Löschen von Logdateien.
Crontab
Die auszuführenden Anweisungen werden in einer benutzereigenen Tabelle gespeichert, der sogenannten crontab. Der Begriff leitet sich ab von griechisch chronos = die Zeit und lat. tabula = die Tafel oder das Brett und bedeutet demnach so viel wie „Stundenplan“. Diese Tabelle besteht aus sechs Spalten; die ersten fünf dienen der Zeitangabe (Minute, Stunde, Tag, Monat, Wochentag), alle weiteren Zeichen bis zum Zeilenumbruch werden als der auszuführende Befehl aufgefasst. Die einzelnen Spalten werden durch Leerzeichen oder Tabulatoren getrennt.
Beispiel einer Crontab:
#M S T M W Befehl 5 * * * * /usr/bin/message.sh #Befehl wird fünf Minuten nach jeder vollen Stunde aufgerufen. */5 * * * * /usr/bin/message.sh #Befehl wird alle 5 Minuten aufgerufen (die Schrittweite wird durch */Schrittweite angegeben). 59 23 * * 0 gzip /var/log/messages #Befehl wird einmal pro Woche sonntags um 23:59 Uhr ausgeführt. 0 0 * * * gzip /var/log/auth.log #Befehl wird täglich um 00:00 Uhr ausgeführt. 20,30 1 * * 1-5 /usr/bin/work.sh #Befehl wird montags bis freitags jeweils um 01:20 und 01:30 ausgeführt. 0 1 1-7 12 1 /usr/bin/work.sh #Befehl wird am 1. bis 7. Dezember sowie an jedem Montag im Dezember um ein Uhr nachts ausgeführt.
Cron bietet noch mehr Funktionen, die bei den unten genannten Weblinks eingesehen werden können.
Die Struktur ist wie folgt zu verstehen:
* * * * * auszuführender Befehl ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7) │ │ │ └────── Monat (1-12) │ │ └──────── Tag (1-31) │ └────────── Stunde (0-23) └──────────── Minute (0-59)
In vielen Linux-Distributionen findet man folgende Zeilen in der crontab:
# run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
Die Cronjobs werden also auf spezielle Verzeichnisse, in denen die Scripte gespeichert sind, ausgelagert. Die Scripte in /etc/cron.hourly werden dann z. B. jede Stunde ausgeführt.
Ansonsten würde die Crontab unter Umständen sehr groß werden.
Alternativen
- at führt Jobs (einmalig) zu einer bestimmten Uhrzeit aus.
- anacron setzt keinen ständig laufenden Rechner voraus und prüft beim Einschalten, ob ein Job hätte ausgeführt werden müssen, und holt das mit eingestellter Verzögerung nach.
- fcron enthält die Fähigkeiten von cron und anacron und weitergehende Optionen.
- launchd ist der Cron-Ersatz bei Mac OS X/Darwin.
- Quartz ist ein Job Scheduling Framework für Java
Weblinks
Wikibooks: Linux-Kompendium: crontab – Lern- und Lehrmaterialiencron(8)
– Linux-Manpage (Englisch)- Cron-Tutorial bei selflinux.org
- Cron im Apfelwiki.de für Mac OS X erklärt
Wikimedia Foundation.