Das FreeBSD-Handbuch
Zurück | Kapitel 12. Konfiguration und Tuning | Weiter

# 12.6. Programme mit `cron` starten

Beigetragen von Tom Rhodes.

Ein sehr nützliches Werkzeug von FreeBSD ist cron(8). `cron` läuft im Hintergrund und überprüft fortlaufend die Datei `/etc/crontab`. Beim Start sucht `cron` neue `crontab`-Dateien im Verzeichnis `/var/cron/tabs`. In den `crontab`-Dateien wird festgelegt, welche Programme zu welchem Zeitpunkt laufen sollen.

Das Werkzeug `cron` verwendet zwei verschiedene Konfigurationsdateien: Die System-`crontab` und die Benutzer-`crontab`. Der einzige Unterschied zwischen beiden Formaten ist das sechste Feld. In der System-`crontab` gibt das sechste Feld das Konto an, unter dem ein Kommando läuft. Aus der System-`crontab` können daher Kommandos unter beliebigen Konten gestartet werden. In der Benutzer-`crontab` gibt das sechste Feld das auszuführende Kommando an. Alle Kommandos laufen unter dem Konto, unter dem die `crontab` erstellt wurde (ein wichtiges Sicherheitsmerkmal).

> Anmerkung: Benutzer können mit Benutzer-`crontabs` ohne `root`-Rechte Befehle terminieren. Die Kommandos in Benutzer-`crontabs` laufen unter dem Benutzer, der die `crontab` erstellt hat.

> Der Benutzer `root` kann, wie jeder andere Benutzer, eine Benutzer-`crontab` besitzen. Die Benutzer-`crontab` von `root` ist nicht mit der Datei `/etc/crontab`, der System-`crontab`, zu verwechseln. Normalerweise besitzt `root`, wegen der Existenz der System-`crontab`, keine eigene Benutzer-`crontab`.

Der folgende Auszug aus der System-`crontab` `/etc/crontab` zeigt den Aufbau einer `crontab`-Datei:

    # /etc/crontab - root's crontab for FreeBSD
    #
    # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
    #
    #
    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    HOME=/var/log
    #
    #
    #minute	hour	mday	month	wday	who	command
    #
    #
    */5	*	*	*	*	root	/usr/libexec/atrun

  Das Zeichen `#` leitet, wie in den meisten Konfigurationsdateien, einen Kommentar ein. Benutzen Sie Kommentare, um die Funktion eines Eintrags zu erläutern. Kommentare müssen in einer extra Zeile stehen. Sie können nicht in derselben Zeile wie ein Kommando stehen, da sie sonst Teil des Kommandos wären. Leerzeilen in dieser Datei werden ignoriert.
  Umgebungsvariablen werden mit dem Gleichheits-Zeichen (`=`) festgelegt. Im Beispiel werden die Variablen `SHELL`, `PATH` und `HOME` definiert. Wenn die Variable `SHELL` nicht definiert wird, benutzt `cron` die Shell `sh`. Wird die Variable `PATH` nicht gesetzt, müssen alle Pfadangaben absolut sein, da es keinen Vorgabewert für `PATH` gibt. Der Vorgabewert für `HOME` ist das Heimatverzeichnis des Accounts, dem die `crontab` gehört.
  In dieser Zeile werden sieben Felder beschrieben: `minute`, `hour`, `mday`, `month`, `wday`, `who` und `command`. Die ersten Felder legen den Zeitpunkt fest, an dem ein Kommando laufen soll. Das Feld `minute` legt die Minute fest, das Feld `hour` die Stunde, das Feld `mday` den Tag des Monats. Im Feld `month` wird der Monat und im Feld `wday` der Wochentag festgelegt. Alle Felder müssen numerische Werte enthalten und die Zeitangaben sind im 24-Stunden-Format. Das Feld `who` gibt es nur in der Datei `/etc/crontab` und gibt den Account an, unter dem das Kommando laufen soll. In den `crontab`-Dateien einzelner Accounts existiert dieses Feld nicht. Im letzten Feld wird schließlich das auszuführende Kommando angegeben.
  Diese Zeile definiert die Zeitpunkte an denen das Kommando `atrun` laufen soll. Beachten Sie die Zeichenfolge `*/5` gefolgt von mehreren `*`-Zeichen. Das Zeichen `*` ist ein Platzhalter und steht für jede mögliche Zeit. Diese Zeile führt das Kommando `atrun` unter dem `root`-Account alle fünf Minuten aus. Mehr über das Kommando `atrun` erfahren Sie in der Hilfeseite atrun(8).

  Bei den Kommandos können beliebige Optionen angegeben werden. Wenn das Kommando zu lang ist und auf der nächsten Zeile fortgesetzt werden soll, muss am Ende der Zeile das Fortsetzungszeichen (`\`) angegeben werden.

Bis auf das sechste Feld, das den Account angibt, sieht jede `crontab`-Datei so wie das Beispiel aus. Das sechste Feld existiert nur in der Systemdatei `/etc/crontab`. In den restlichen `crontab`-Dateien fehlt dieses Feld.

## 12.6.1. `crontab` installieren

> Wichtig: Die nachstehende Prozedur gilt nur für Benutzer-`crontabs`. Die System-`crontab` können Sie einfach mit Ihrem Lieblingseditor editieren. Das Werkzeug `cron` bemerkt, dass sich die Datei geändert hat und wird die neue Version benutzen. Lesen Sie bitte auch die FAQ zur Meldung root: not found.

Eine Benutzer-`crontab`, beispielsweise die Datei `crontab`, können Sie mit jedem Editor erstellen. Die Benutzer-`crontab` installieren Sie mit dem nachstehenden Befehl:

    # crontab crontab

Das Argument zum Befehl `crontab` ist die vorher erstellte Datei `crontab`.

Der Befehl `crontab -l` zeigt die installierte `crontab`-Datei an.

Benutzer, die eine eigene `crontab`-Datei ohne Vorlage erstellen wollen, können den Befehl `crontab -e` verwenden. Dieser Befehl ruft einen Editor auf und installiert beim Verlassen des Editors die `crontab`-Datei.

Wollen Sie die installierte Benutzer-`crontab` entfernen, rufen Sie den Befehl `crontab` mit der Option `-r` auf.

Zurück | Zum Anfang | Weiter
Start von Diensten | Nach oben | Das rc-System für Systemdienste

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.