Cron

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

ZD-Logo.png
Das Board mit Freiheiten




Einführung Freetz Pakete Freetz Addons Freetz Tipps Freetz chroot Freetz Images Freetz Faqs


Der cron-Daemon ist eine Jobsteuerung von Unix bzw. unixartigen Betriebssystemen wie Linux, Berkeley Software Distribution 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

Der Begriff selbst leitet sich ab von griechisch chronos = die Zeit und lat. tabula = die Tafel, oder das Brett und bedeutet demnach soviel wie „Stundenplan“. Die auszuführenden Befehle werden in einer Benutzerkonto|benutzereigenen Tabelle gespeichert, der sogenannten crontab. 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   //Der erste Befehl (beginnend mit 5…) wird fünf Minuten nach jeder vollen Stunde
*/5   *   * * *    /usr/bin/message.sh   //der zweite alle 5 Minuten (die Schrittweite wird durch */Schrittweite angegeben)
59    23  * * 0    cp /var/log/messages  //der dritte einmal pro Woche Sonntag um 23:59 Uhr
0     0   * * *    cp /var/log/syslog    //der vierte täglich um 00:00 Uhr
20,30 1   * * 1-5  /usr/bin/work.sh      //und der fünfte Montag bis Freitag jeweils um 01:20 und 01:30 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)

Die Crontabs haben folgende Form.

Minute Stunde Tag Monat Wochentag Befehl

Mögliche Werte sind die folgenden.

Minute 	        Werte von 0 bis 59 oder "*"
Stunde         	Werte von 0 bis 23 oder "*"
Tag 	        Werte von 1 bis 31 oder "*"
Monat 	        Werte von 1 bis 12, "Jan" bis "Dec", "jan" bis "dec", oder "*"
Wochentag 	Werte von 0 bis 7 (sowohl 0 wie 7 stehen für den Sonntag), "Sun" bis "Sat", "sun" bis "sat", oder "*"
Befehl 	        Der auszuführende Befehl mit Optionen oder ein aufzurufendes Skript 

Beispiele

Anzeige von Datum und Uhrzeit auf der Konsole an jedem Tag des Monats stündlich zwischen 9 und 18 Uhr.

0 9-18 * * * date > /dev/console

Anzeige von Datum und Uhrzeit auf der Konsole jeweils Montags und Freitag zu jeder Stunde.

0 * * * 2,5 date > /dev/console

Anzeige von Datum und Uhrzeit auf der Konsole zu jeder geraden zweiten Stunde.

0 */2 * * * date > /dev/console

Anzeige von Datum und Uhrzeit auf der Konsole zu jeder zweiten Stunde zwischen 1 und 6 Uhr (hier also wie "1,3,5").

0 1-6/2 * * * date > /dev/console


Rebooten bzw Neu starten täglich um 5.30 Uhr

30 5 * * 1-7 /sbin/reboot



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.

Quellen: Wikipedia

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

Quellenangaben

http://de.wikipedia.org/wiki/Cron

links