Was ist der Unterschied zwischen cron.d (wie in /etc/cron.d/) und crontab?

17

Was ist der Hauptunterschied zwischen dem Verzeichnis cron.d (wie in /etc/cron.d/) und crontab?

Soweit ich /etc/cron.d/my_non_crontab_cronjobsweiß, könnte man eine Datei wie erstellen und alles, was man will, darin ablegen, so wie man sie crontabüber via einfügen würde crontab -e.

Was ist der Hauptunterschied zwischen den beiden?

Arcticooling
quelle
Speicherort im System und Format.
Rui F Ribeiro
Format? Aus 2 Beispielen habe ich gesehen, dass es auch die 5-Zeiteinheiten-Syntax hat, oder ich verwechsle es mit crontab.
Arcticooling

Antworten:

24

Die Unterschiede sind in der cron(8)Manpage in Debian ausführlich dokumentiert . Der Hauptunterschied besteht darin, dass /etc/cron.dseparate Dateien vorhanden sind, während crontabpro Benutzer eine Datei verwaltet wird. Es ist daher einfacher, den Inhalt der /etc/cron.dVerwendung von Skripten (für die automatisierte Installation und Aktualisierung) und die crontabVerwendung eines Editors (für Endbenutzer wirklich) zu verwalten.

Weitere wichtige Unterschiede sind , dass nicht alle Distributionen unterstützen /etc/cron.d, und dass die Dateien in /etc/cron.deine bestimmte Anzahl von Anforderungen gerecht zu werden (über gültigen Cronjobs ist): sie im Besitz von root werden muß, und müssen Übereinstimmen run-parts"Benennungskonventionen ( keine Punkte , nur Buchstaben, Ziffern, Unterstriche und Bindestriche).

Wenn Sie verwenden erwägen /etc/cron.d, dann ist es in der Regel lohnt sich eine der Berücksichtigung /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, oder /etc/cron.monthlystatt.

Stephen Kitt
quelle
1
In einem realen Beispiel werden die Elemente in der cron.dRegel über die Paketinstallation hinzugefügt, während die verschiedenen crontabDateien voll von Dingen sind, die von einem entsprechenden Benutzer erstellt wurden. IE, das Paket certbotoder fügt einen Eintrag letsencryptein cron.d- bevor das Paket verfügbar war, fügte der Systemadministrator (root) einen Eintrag im Root-Benutzer hinzu, crontabder auf ein Shell-Skript / etc. Zeigt. um die Zertifikate auf dem neuesten Stand zu halten.
ivanivan
Danke Stephen! Warum empfehlen Sie die Verwendung von stündlichen / wöchentlichen / monatlichen Cron-Verzeichnissen? Und übrigens, warum heißt die Manpage dort cron (8), wofür ist die 8 (die Manpage für crontab heißt crontab (1)).
Arcticooling
1
@Arcticooling, sehen Sie diese Frage für eine Erklärung des(8)
user4556274
Die stündlichen Verzeichnisse usw. erleichtern das Hinzufügen von Jobs (es ist nicht erforderlich, die genaue Syntax herauszufinden) und ermöglichen es dem System, die tatsächliche Ausführungszeit je nach den Umständen zu variieren. Dies ist besonders nützlich auf Systemen, die nicht immer eingeschaltet sind anacron.
Stephen Kitt
1
Der Nachteil der hourly|daily|weekly|monthlyVerzeichnisse ist, dass sie (AFAICT) immer als Root ausgeführt werden und die Ausführung mit geringeren Berechtigungen nicht direkt unterstützen.
Ilkkachu
5

Ich würde sagen, der Hauptunterschied ist der offensichtliche: /etc/crontabund kann /etc/cron.dnicht von regulären Benutzern geändert werden, während die Crontabs pro Benutzer darin bestehen, /var/spool/crondass das crontabTool bearbeitet wird. (Vorbehaltlich cron.allowund cron.denynatürlich.) Natürlich können Sie auf einem System, auf dem Sie der Administrator sind, beides verwenden. Auf einem gemeinsam genutzten System können die regulären Benutzer nur einen verwenden.

Damit verbunden ist das zusätzliche Feld in den systemweiten Dateien, der Benutzername, unter dem der Job ausgeführt wird.

ilkkachu
quelle