CRON(8) System-Administration CRON(8)

crond - Daemon zur geplanten Ausführung von Befehlen

crond [-c | -h | -i | -n | -p | -P | -s | -m<E-Mail-Befehl>]
crond -x [ext,sch,proc,pars,load,misc,test,bit]
crond -V

Wenn klassische Sysvinit-Skripte verwendet werden, wird cron über /etc/rc.d/init.d oder /etc/init.d gestartet. Bei aktiviertem Systemd wird die Unit-Datei in /lib/systemd/system/crond.service installiert und der Daemon über den Befehl systemctl start crond.service gestartet. Der Befehl kehrt sofort zurück, daher besteht keine Notwendigkeit, ihn mit dem Parameter & zu starten.

Cron sucht in /var/spool/cron nach Crontab-Dateien (»Cron-Tabellen«), die nach den Benutzerkonten in /etc/passwd benannt sind. Die gefundenen Crontabs werden in den Speicher geladen. Cron sucht auch nach /etc/anacrontab und allen Dateien im Verzeichnis /etc/cron.d, die ein anderes Format haben (siehe crontab(5)). Cron untersucht alle gespeicherten Crontabs und überprüft jeden Auftrag, um zu sehen, ob er in der aktuellen Minute ausgeführt werden muss. Beim Ausführen von Befehlen werden alle Ausgaben per lokaler E-Mail an den Besitzer der Crontab gesendet (oder an den in der Umgebungsvariable MAILTO in der Crontab angegebenen Benutzer, sofern diese Variable existiert). Mit der Option -s kann die Ausgabe jedes Auftrags auch an das Systemprotokoll gesendet werden.

Es gibt zwei Möglichkeiten zur Überprüfung auf Änderungen in Crontabs. Die erste Methode überprüft die Änderungszeit einer Datei. Die zweite Methode basiert auf der Inotify-Unterstützung. Die Benutzung von Inotify wird in das Protokoll in /var/log/cron geschrieben, nachdem der Daemon gestartet wurde. Die Inotify-Unterstützung prüft auf Änderungen in allen Crontabs und greift nur auf die Festplatte zu, wenn eine Änderung erkannt wird.

Wenn Sie die auf der Änderungszeit basierende Option verwenden, prüft cron die Änderungszeitstempel der Crontabs jede Minute auf Änderungen und lädt die Crontabs neu, die sich geändert haben. Es besteht keine Notwendigkeit, cron neu zu starten, nachdem einige der Crontabs geändert wurden. Die auf der Änderungszeit basierende Methode wird auch dann angewendet, wenn Inotify nicht initialisiert werden konnte.

Cron prüft folgende Dateien und Verzeichnisse:

/etc/crontab
Die Crontab des Systems. Heutzutage ist diese Datei standardmäßig leer. Ursprünglich war sie zur täglichen, wöchentlichen oder monatlichen Ausführung von Aufträgen gedacht. Standardmäßig werden diese Aufträge nun durch anacron ausgeführt, welches die Konfigurationsdatei /etc/anacrontab liest. In anacrontab(5) finden Sie weitere Details.
/etc/cron.d/
Verzeichnis, das für verschiedene Benutzer gespeicherte System-Cron-Aufträge enthält.
/var/spool/cron
Verzeichnis, das mit dem Befehl crontab von Benutzern erstellte Crontabs enthält.

Beachten Sie, dass der Befehl crontab(1) die Änderungszeit des Spool-Verzeichnisses immer aktualisiert, wenn es eine Crontab ändert.

Änderungen der lokalen Zeit von weniger als drei Stunden, wie jene, die durch Sommer-/Winterzeitumstellung hervorgerufen werden, werden auf besondere Weise behandelt. Dies bezieht sich nur auf Aufträge, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen, sowie auf solche mit einer Granularität von mehr als einer Stunde. Aufträge, die häufiger ausgeführt werden, werden normal behandelt.

Wenn die Zeit um eine Stunde vorgestellt wurde, werden die Aufträge, die im übersprungenen Zeitraum ausgeführt werden würden, sofort ausgeführt. Umgekehrt wird beim Zurückstellen der Zeit verhindert, dass der gleiche Auftrag zweimal ausgeführt wird.

Änderungen der Zeit von mehr als drei Stunden werden als Korrekturen der Uhrzeit oder der Zeitzone betrachtet und die neue Zeit sofort angewendet.

Es ist möglich, für Crontabs verschiedene Zeitzonen zu verwenden. In crontab(5) finden Sie weitere Informationen hierzu.

Cron unterstützt die Zugriffssteuerung über PAM, sofern auf dem System PAM installiert ist. Weitere Informationen finden Sie in pam(8). Eine PAM-Konfigurationsdatei für crond ist in /etc/pam.d/crond installiert. Der Daemon lädt die PAM-Umgebung aus dem Modul pam_env. Dies kann durch Definieren spezifischer Einstellungen in der entsprechenden Crontab-Datei außer Kraft gesetzt werden.

-h
gibt eine Hilfemeldung aus und beendet das Programm.
-i
deaktiviert die Inotify-Unterstützung.
-m
ermöglicht die Angabe des Shell-Befehls, der zum Senden von Cron-E-Mails anstelle von sendmail(8) verwendet werden soll. Dieser Befehl muss eine vollständig formatierte E-Mail-Nachricht (einschließlich Kopfzeilen) über die Standardeingabe akzeptieren und diese als E-Mail-Nachricht an die in den Kopfzeilen der E-Mail angegebenen Empfänger versenden. Die Angabe der Zeichenkette off (das heißt, crond -m off) deaktiviert das Versenden von E-Mails.
-n
weist den Daemon an, im Vordergrund zu bleiben. Dies kann nützlich sein, wenn Sie ihn außerhalb von »init« starten. Mit dieser Option ist die Anpassung der PAM-Einstellung notwendig. /etc/pam.d/crond darf das Modul pam_loginuid.so nicht aktivieren.
-p
erlaubt cron, alle durch Benutzer angelegte Crontabs zu akzeptieren.
-P
setzt die Umgebungsvariable PATH nicht. Diese wird stattdessen von der Umgebung ererbt.
-c
aktiviert Clustering-Unterstützung, wie nachfolgend beschrieben.
-s
weist cron an, die Ausgabe des Auftrags mittels syslog(3) an das Systemprotokoll zu senden. Dies ist nützlich, wenn Ihr System nicht über ein installiertes sendmail(8) verfügt oder das Versenden von E-Mails deaktiviert ist.
-x
erlaubt das Setzen von Debug-Schaltern.
-V
Version anzeigen und beenden.

Wenn SIGHUP empfangen wird, schließt der cron-Daemon seine Protokolldatei und öffnet diese dann neu. Dies erweist sich in Skripten als nützlich, die Dateien rotieren und altern. Natürlich ist das irrelevant, wenn cron zur Nutzung mit syslog(3) erstellt wurde.

In dieser Version von cron ist es möglich, ein über das Netzwerk eingehängtes /var/spool/cron über einen Rechner-Cluster zu verwenden und anzugeben, dass niemals mehrere Rechner gleichzeitig die Crontab-Aufträge in diesem Verzeichnis ausführen sollen. Dazu starten Sie cron mit der Option -c, wobei die Datei /var/spool/cron/.cron.hostname nur eine einzige Zeile enthält, in der der Name eines ausgewählten Rechners im Cluster angegeben ist, der die Aufträge ausführen soll. Falls diese Datei nicht existiert oder der darin angegebene Rechnername nicht dem entspricht, was gethostname(2) zurückliefert, dann werden alle Crontab-Dateien in diesem Verzeichnis ignoriert. Dies ist bei den in der Datei /etc/crontab oder in den im Verzeichnis /etc/cron.d angegebenen Dateien wirkungslos. Diese Dateien werden immer ausgeführt und als rechnerspezifisch aufgefasst.

Anstatt /var/spool/cron/.cron.hostname direkt zu bearbeiten, verwenden Sie die Option -n von crontab(1), um den Rechner anzugeben.

Sie sollten sicherstellen, dass die Uhren aller Rechner in einem Cluster und die des Dateiservers, von welchem das gemeinsame Crontab-Verzeichnis eingehängt wird, möglichst exakt synchronisiert sind, zum Beispiel mittels ntpd(8). Anderenfalls werden die Ergebnisse kaum vorhersagbar sein.

Durch die Nutzung der Cluster-Freigabe wird die Unterstützung für Inotify automatisch deaktiviert, da Inotify mit über das Netzwerk bereitgestellten gemeinsam genutzten Dateisystemen nicht umgehen kann.

Alle crontab-Dateien müssen reguläre Dateien oder Symlinks sein, die auf reguläre Dateien zeigen. Sie dürfen nur vom Eigentümer ausführ- oder schreibbar sein. Diese Voraussetzung kann durch die Option -p in der Befehlszeile von crond überschrieben werden. Falls die Inotify-Unterstützung verwendet wird, wird der Cron-Daemon nicht automatisch über Änderungen in den per Symlink eingebundenen Crontabs benachrichtigt. Der Cron-Daemon muss ein SIGHUP-Signal empfangen, um die Crontabs neu zu laden. Dies ist eine Einschränkung der Inotify-API.

Wenn Sendmail nicht installiert ist, werden keine E-Mails versendet, sondern die Ausgabe in das Systemprotokoll geschrieben.

crontab(1), crontab(5), inotify(7), pam(8)

Paul Vixie
Marcela Mašláňová
Colin Dean
Tomáš Mráz

Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> 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.

26. September 2013 cronie