crond - Daemon zur geplanten Ausführung von Befehlen (Vixie Cron)
cron [
-f] [
-l] [
-L Protokollierstufe]
cron wird automatisch aus
/etc/init.d gestartet, sobald
Mehrbenutzer-Runlevel erreicht sind.
- -f
- bleibt im Vordergrundmodus und wird nicht
daemonisiert.
- -l
- aktiviert LSB-kompatible Namen für die Dateien in
/etc/cron.d. Diese Einstellung wirkt sich jedoch nicht auf die
Auswertung von Dateien unter /etc/cron.hourly,
/etc/cron.daily, /etc/cron.weekly oder
/etc/cron.monthly aus.
- -n
- bezieht den FQDN (den vollständigen Rechnernamen)
beim Versenden von E-Mails im Betreff ein. Standardmäßig
kürzt cron den Rechnernamen ab.
-
-L Protokollierstufe
- teilt cron mit, was über
Aufträge als Summe der folgenden Werte protokolliert werden
soll (Fehler werden unabhängig von diesem Wert protokolliert):
- 1
- protokolliert den Start aller Cron-Aufträge.
- 2
- protokolliert das Ende aller Cron-Aufträge.
- 4
- protokolliert alle fehlgeschlagenen Aufträge
(Exit-Status != 0).
- 8
- protokolliert die Prozessnummer aller
Cron-Aufträge.
- Die Vorgabe ist die Protokollierung des Starts aller
Aufträge (1). Die Protokollierung wird deaktiviert, wenn die
Protokollierstufe auf Null (0) gesetzt ist. Ein Wert von 15
wählt alle Optionen aus.
cron durchsucht seinen Spool-Bereich (
/var/spool/cron/crontabs)
nach Crontab-Dateien (die nach den Benutzerkonten in
/etc/passwd
benannt sind). Die gefundenen Crontabs werden in den Speicher geladen.
Beachten Sie, dass auf Crontabs in diesem Verzeichnis nicht direkt zugegriffen
werden sollte - zum Zugriff und zur Aktualisierung sollte der Befehl
crontab verwendet werden.
cron liest auch die Datei /etc/crontab, die ein etwas anderes Format hat
(siehe
crontab(5)). Unter Debian ist der Inhalt der Datei /etc/crontab
so vordefiniert, dass Programme unter /etc/cron.hourly, /etc/ron.daily,
/etc/cron.weekly und /etc/cron.monthly ausgeführt werden. Diese
Konfiguration ist Debian-spezifisch; lesen Sie dazu den nachfolgenden Hinweis
DEBIAN-SPEZIFISCH.
Unter Debian liest
cron zusätzlich die Dateien im Verzeichnis
/etc/cron.d.
cron behandelt die Dateien in /etc/cron.d auf die gleiche
Weise wie die Datei /etc/crontab (sie folgen dem besonderen Format dieser
Datei, das heißt, sie enthalten das Feld
user). Allerdings sind
sie von /etc/crontab unabhängig: Sie erben beispielsweise nicht die
Werte der Umgebungsvariablen. Diese Abweichung ist Debian-spezifisch; lesen
Sie dazu den Hinweis
DEBIAN-SPEZIFISCH unten.
Wie /etc/crontab werden die Dateien im Verzeichnis /etc/cron.d auf
Änderungen überwacht. Im Allgemeinen sollte der Systemverwalter
nicht /etc/cron.d/, sondern die Standarddatei des Systems /etc/crontab
verwenden.
Die Datei /etc/crontab und die Dateien in /etc/cron.d müssen Root
gehören und dürfen nicht für die Gruppe oder für
Andere schreibbar sein. Im Gegensatz zum Spool-Bereich dürfen die
Dateien unter /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly
und /etc/cron.monthly auch Symlinks sein. Das setzt allerdings voraus, dass
sowohl der Symlink als auch die Datei, auf die er zeigt, Root gehören.
Die Dateien unter /etc/cron.d müssen nicht ausführbar sein,
während die Dateien unter /etc/cron.hourly, /etc/cron.daily,
/etc/cron.weekly und /etc/cron.monthly ausführbar sein dürfen,
weil sie von
run-parts ausgeführt werden (siehe
run-parts(8) für weitere Informationen).
cron wacht dann jede Minute auf, untersucht alle gespeicherten Crontabs
und prüft jeden Befehl, um zu sehen, ob er in der aktuellen Minute
ausgeführt werden sollte. Beim Ausführen von Befehlen werden
alle Ausgaben per E-Mail an den Eigentümer der Crontab-Datei (oder an
den Benutzer, der in der Umgebungsvariable
MAILTO, falls diese
existiert, genannt ist) vom Eigentümer der Crontab (oder von der
E-Mail-Adresse, die in der Crontab aufgeführten Umgebungsvariable
MAILFROM genannt ist, falls diese existiert) versendet. Bei den Kind-Kopien
von
cron, unter denen diese Prozesse ausgeführt werden, wird der
Name in Großbuchstaben umgewandelt, wie in den Ausgaben von
syslog und
ps zu sehen ist.
Zusätzlich prüft
cron jede Minute, ob sich die
Änderungszeit des Spool-Verzeichnisses (oder die Änderungszeit
der Datei
/etc/crontab) geändert hat. Falls dem so ist,
untersucht
cron dann die Änderungszeit aller Crontabs und
lädt jene neu, die sich geändert haben. Daher muss
cron
nicht immer neu gestartet werden, wenn sich eine Crontab-Datei geändert
hat. Beachten Sie, dass der Befehl
crontab(1) immer dann die
Änderungszeit des Spool-Verzeichnisses aktualisiert, wenn es eine
Crontab-Datei ändert.
Änderungen der Uhrzeit um weniger als drei Stunden müssen
besonders berücksichtigt werden, zum Beispiel am Beginn oder Ende der
Sommerzeit. Wenn die Uhr vorgestellt wurde, werden die Aufträge, die in
der übersprungenen Zeit ausgeführt werden würden,
baldmöglichst nach der Änderung ausgeführt. Umgekehrt
werden bei einer Zurückstellung um weniger als drei Stunden die
Aufträge, die in die wiederholte Zeitspanne fallen, nicht erneut
ausgeführt.
Nur Aufträge, die zu einer bestimmten Zeit ausgeführt werden (die
weder als @hourly noch als »*« in der Stunden- oder
Minutenangabe angegeben sind), sind davon betroffen. Aufträge, die mit
Platzhaltern angegeben sind, werden basierend auf der neuen Zeit unmittelbar
ausgeführt.
Änderungen der Zeit von mehr als drei Stunden werden als Korrekturen der
Uhrzeit betrachtet und die neue Zeit sofort angewendet.
cron speichert seine Aktionen in der Systemprotokolleinrichtung
»cron«. Die Protokollierung kann mit dem Standardwerkzeug
syslogd(8) gesteuert werden.
Falls auf Debian-Systemen in der Datei
/etc/default/cron konfiguriert,
können die Locale-Einstellungen für den
cron-Daemon
mittels
/etc/environment oder
/etc/default/locale verwaltet
werden, wobei die Werte des Letzteren Vorrang haben. Diese Dateien werden
gelesen und zum Setzen der Umgebungsvariablen
LANG,
LC_ALL und
LC_CTYPE verwendet. Diese Variablen dienen dann zum Festlegen des
Zeichensatzes für E-Mails, der standardmäßig auf
»C« gesetzt ist.
Dies beeinflusst
NICHT die Umgebung von Aufgaben, die unter
cron
ausgeführt werden. Weitere Informationen, wie Sie die Umgebung von
Aufgaben anpassen können, finden Sie in
crontab(5).
Der Daemon verwendet (falls vorhanden) die Definition aus
/etc/timezone
für die Zeitzone.
Die Umgebung kann in den Crontab-Definitionen der Benutzer neu eingerichtet
werden, aber
cron führt Aufgaben nur in einer einzelnen Zeitzone
aus.
Debian führt einige Änderungen an
cron ein, die bei den
Originalautoren ursprünglich nicht verfügbar waren. Die
wichtigsten Änderungen sind:
- —
- Unterstützung für
/etc/cron.{hourly,daily,weekly,monthly} mittels /etc/crontab,
- —
- Unterstützung für /etc/cron.d
(Ergänzungsverzeichnis für Crontabs von Paketen),
- —
- PAM-Unterstützung,
- —
- SELinux-Unterstützung,
- —
- Auditprotokoll-Unterstützung,
- —
- Sommer-/Winterzeitumstellung und weitere zeitbezogene
Änderungen und Korrekturen,
- —
- SGID crontab(1) anstelle von SUID root,
- —
- Debian-spezifische Dateispeicherorte und Befehle,
- —
- Debian-spezifische Konfiguration (/etc/default/cron),
- —
- sowie einige weitere kleinere Funktionalitäten und
Korrekturen.
Unterstützung für /etc/cron.hourly, /etc/cron.daily,
/etc/cron.weekly und /etc/cron.monthly wird unter Debian über die
Standardeinstellung der Datei /etc/crontab bereitgestellt (siehe das
systemweite Beispiel in
crontab(5)). Die standardmäßige
systemweite Crontab enthält vier Aufgaben: Ausführung jede
Stunde, jeden Tag, jede Woche und jeden Monat. Jede dieser Aufgaben
führt
run-parts aus, wobei jedes der Verzeichnisse als Argument
übergeben wird. Diese Aufgaben sind deaktiviert, falls
anacron
installiert ist (außer für die stündlich
auszuführenden Aufgaben), um Konflikte zwischen beiden Daemons zu
vermeiden.
Wie oben beschrieben, müssen die Dateien in diesen Verzeichnissen einige
Plausibilitätsprüfungen durchlaufen, wie folgende: Sie
müssen ausführbar sein, sie müssen Root gehören,
sie dürfen von der Gruppe oder anderen nicht schreibbar sein und, falls
es Symlinks sind, auf Dateien zeigen, die Root gehören.
Zusätzlich müssen die Dateinamen den Erfordernissen von
run-parts genügen: Sie dürfen nur aus Buchstaben, Ziffern
und den speziellen Zeichen Unterstrich (»_«) und Bindestrich
(»-«) bestehen. Jede Datei, die diese Voraussetzungen nicht
erfüllt, wird von
run-parts nicht ausgeführt.
Beispielsweise werden alle Dateien ignoriert, deren Namen Punkte enthalten.
Dadurch wird
cron daran gehindert, Dateien auszuführen, welche
die Debian-Paketverwaltung bei der Verarbeitung von Dateien in /etc/cron.d/
als Konfigurationsdateien hinterlassen hat (das heißt, Dateien mit den
Endungen .dpkg-dist, .dpkg-orig und .dpkg-new).
Diese Funktionalität kann von Systemverwaltern und Paketen verwendet
werden, um Aufgaben einzubeziehen, die in definierten Abständen
ausgeführt werden sollen. Dateien, die von Paketen in diesen
Verzeichnissen erstellt wurden, sollten nach dem Paket benannt werden, das sie
dort erstellt hat.
Unterstützung für /etc/cron.d ist im
cron-Daemon selbst
enthalten, der diesen Ort als systemweiter Crontab-Spool behandelt. Dieses
Verzeichnis kann beliebige Dateien enthalten, welche Aufgaben definieren, die
dem in der Datei /etc/crontab verwendeten Format folgen. Das heißt,
dass diese Dateien - im Gegensatz zum Benutzer-Spool von
cron - den
Benutzernamen in der Aufgabendefinition bereitstellen müssen, unter dem
die Aufgaben ausgeführt werden sollen.
Dateien in diesem Verzeichnis müssen Root gehören, müssen
nicht ausführbar sein (es sind Konfigurationsdateien, genau wie
/etc/crontab) und müssen zur Benennungskonvention von
run-parts(8) konform sein: Sie dürfen nur aus Groß- und
Kleinbuchstaben, Ziffern, Unterstrichen und Bindestrichen bestehen. Das
bedeutet, dass sie
keine Punkte enthalten dürfen. Falls die
Option
-l an
cron übergeben wird (die Sie in
/etc/default/cron einrichten können, siehe unten), dann müssen
sie der LSB-Namensraumspezifikation entsprechen, genau wie bei der Option
--lsbsysinit von
run-parts.
Pakete, die eine feinere Kontrolle über ihre Planung benötigen,
als es in den Verzeichnissen /etc/cron.{hourly,daily,weekly,monthly}
möglich ist, soll mit dieser Funktionalität ermöglicht
werden, eine Crontab-Datei zu /etc/cron.d hinzuzufügen. Solche Dateien
sollten nach dem Paket benannt werden, das sie dort bereitgestellt hat.
Die Standardkonfiguration von
cron wird auch durch die Datei
/etc/default/cron beeinflusst, welche vom init.d-Skript gelesen wird,
das den
cron-Daemon startet. Diese Datei bestimmt, ob
cron die
Umgebungsvariablen des Systems liest und es ermöglicht, vor der
Ausführung von
cron zusätzliche Optionen
hinzuzufügen, entweder zum Einrichten von dessen Protokollierung oder
um festzulegen, wie die Dateien in /etc/cron.d behandelt werden sollen.
crontab(1),
crontab(5),
run-parts(8)
Paul Vixie <
[email protected]> ist der Autor von
cron und der
ursprüngliche Verfasser dieser Handbuchseite. Diese Handbuchseite wurde
für Debian von Steve Greenland, Javier Fernandez-Sanguino und Christian
Kastner angepasst.
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario
Blättermann <
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer