# Alle Jahre wieder...

Es gibt Programme, die sollten in regelmäßigen Abständen laufen, z.B. um das Postfach auf neu ankommende Mail zu überprüfen. Hierfür existiert ein eigener Dämon `crond`, der alle in bestimmten Tabellen aufgeführten Maßnahmen zu gegebener Zeit veranlasst.

Für den Systemverwalter besteht die Möglichkeit, bestimmte wiederkehrende Verwaltungsaufgaben in die Datei `/etc/crontab` einzutragen:

`# Kommandos werden unter dieser Shell ausgefuehrt # SHELL=/bin/sh # Kommandos werden in diesen Pfaden gesucht # PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin # die Ausgaben der Kommandos werden per Mail an root geleitet # MAILTO=root 53 6 * * * $HOME/bin/cron.daily 0 * * * * test -x /usr/sbin/faxqclean && /usr/sbin/faxqclean 25 23 * * * test -e /usr/sbin/faxcron && sh /usr/sbin/faxcron | mail FaxMaster`

Zu Beginn einer solchen `crontab` können bestimmte Einstellungen vorgenommen werden, die die Ausführung der in der Tabelle enthaltenen Kommandos steuern. Im Beispiel werden die Shell, die zur Interpretation der Kommandos genutzt wird, die Suchpfade nach ausführbaren Programmen und die Ausgabeumleitung festgelegt.

Es folgen die Einträge der Art "Wann ist was zu tun", wobei 5 Felder das "Wann" beschreiben und der Rest das "Was". Schauen wir uns die Zeitfelder genauer an; von links nach rechts besitzen sie folgende Bedeutung:

Feld | Zeit | Zulässige Werte
1 | Minute | 0-59
2 | Stunde | 0-23
3 | Tag | 0-31
4 | Monat | 0-12, jan, feb, ..., dec
5 | Wochentag | 0-7, sun (entspricht 0 oder 7), mon, ..., sat

Jedes Feld erlaubt auch die Eingabe mehrerer Werte. Die nachfolgende Tabelle fasst die verschiedenen Syntaxvarianten zusammen, die Beispiele beziehen sich - sofern nicht anders angegeben - auf Minuten:

| Syntax | Beispiel/Bemerkung
Voller Bereich | `*` | 0, 1, 2, ..., 59
Ausgewählte Bereiche | `1-5` | 1, 2, 3, 4, 5
Liste | 2,3,11,12 | Nur an den angegebenen Werten
2,3,30-40 | Kombination aus Liste und Bereich
Schrittweite | */2 | aller zwei Minuten (0, 2, ..., 58)

Tag, Wochentag und Monat können auch als englische Namen (die ersten drei Buchstaben) angegeben werden. Klein- und Großschreibung werden dabei nicht unterschieden. Bereiche sind bei der Verwendung von Namen nicht erlaubt.

Das Editieren der `/etc/crontab` ist selbstverständlich nur dem Systemadministrator gestattet, dem gewöhnlichen Nutzer steht das Kommando `crontab` zur Verfügung, das ihm eine eigene Tabelle im Verzeichnis `/var/crond/tabs` unter seinem Nutzernamen generiert. Ein Nutzer kann mit

`user@sonne> crontab -e`

seine eigene crontab-Datei editieren und mit

`user@sonne> crontab -l`

die Einträge betrachten. Ein direktes Editieren ist nicht möglich, da die Datei `root` gehört!

Um zum Beispiel den Feierabend am Rechner nicht zu verschlafen hilft:

`user@sonne> crontab -e no crontab for user - using an empty one ... 0 20 * * 1-5 echo -e "E.T. will nach Hause \a" ... crontab: installing new crontab`

das einen um 20.00 Uhr an jedem Wochentag an den rechtzeitigen Abschied erinnert, indem ein Piepton erklingt und wir vom `crond` eine Mail erhalten.

Wir überzeugen uns noch schnell vom richtigen Eintrag:

`user@sonne> crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.1491 installed on Fri Nov 13 13:30:46 1998) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 0 20 * * 1-5 echo -e "E.T. will nach Hause \a"`