Protokollieren von Systemmeldungen Linux Systemadministration Neuigkeiten für den Nutzer Inhalt Index


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"


Protokollieren von Systemmeldungen Linux Systemadministration Neuigkeiten für den Nutzer Inhalt Index