Wo werden System-Cronjobs platziert?

11

Wenn ich einen Cronjob benötige , der auf Systemebene ausgeführt wird (dh nicht spezifisch für einen bestimmten Benutzer), wie schlagen Sie mir vor, ihn zu erstellen?

  1. läuft crontab -eals root
  2. anhängen an /etc/crontab
  3. Erstellen einer Datei, in der der Cronjob definiert ist /etc/cron.d/
  4. Erstellen einer Datei, in der der Cronjob definiert ist /etc/cron.*ly/(aber nur, wenn dieses Zeitintervall meinen Anforderungen entspricht)

Was mich am meisten beunruhigt, ist: Welche dieser Lösungen wird möglicherweise durch ein Systemupdate überschrieben ?

Außerdem denke ich, wenn der Job lang ist, sollte ich ihn in eine separate Skriptdatei einfügen , zum Beispiel in /root/bin/. Sind Sie einverstanden?

bläulich
quelle
3
Sie sollten angeben, welche Unix- oder Linux-Distribution Sie verwenden.
Jlliagre
Ich lerne gerade :) Ich dachte, es wäre ein distro-unabhängiges Verhalten ...
bläulich

Antworten:

13

Nicht benutzen crontab -e

Ich würde es nicht crontab -eals root einfügen. Dies ist für andere Administratoren im Allgemeinen weniger offensichtlich und geht wahrscheinlich mit der Zeit verloren. Wenn Sie sie eingeben, können /etc/crontabSie genau die Zeit angeben, zu der sie ausgeführt werden sollen, und Sie können auch einen anderen Benutzer angeben.

Alternative Standorte

Wenn Sie das Skript nicht als anderen Benutzer ausführen möchten und / oder das Skript nur wöchentlich, täglich usw. ausgeführt werden soll, stellen mehrere Distributionen Verzeichnisse bereit, in denen Skripte abgelegt werden können, die zu einem bestimmten Zeitpunkt automatisch verarbeitet werden.

Zum Beispiel unter Redhat-basierten Distributionen:

$ ls -dl /etc/cron*
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.daily
-rw-------. 1 root root    0 Nov 23 07:42 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Nov 29 11:03 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.monthly
-rw-r--r--. 1 root root  457 Sep 26  2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 26  2011 /etc/cron.weekly

Ich setze häufig Cron auf Systemebene ein, in denen ich zu einem bestimmten Zeitpunkt ausführen möchte, /etc/cron.danstatt /etc/crontab, insbesondere wenn es sich um komplexere Skripte handelt.

Ich bevorzuge die Verwendung der Verzeichnisse unter, /etc/cron*da sie ein viel offensichtlicherer Ort sind, den andere Systemadministratoren kennen und die Dateien hier über Paketinstallationen wie rpmund / oder verwaltet werden können apt.

Einträge schützen

Alle von mir erwähnten Verzeichnisse sind zum Einfügen von Skripten vorgesehen, die von einem Paketmanager nicht zerstört werden. Wenn Sie sich Gedanken über den Schutz eines Crontab-Eintrags machen, würde ich ihn definitiv nicht in die /etc/crontabDatei einfügen, sondern als richtiges Skript in eines der /etc/cron*Verzeichnisse.

slm
quelle
1

Ich würde # 4 wählen. Damit können die Systemeinstellungen auswählen, wann der Job ausgeführt werden soll, und normalerweise leisten sie einen guten Job: "Ausführen, wenn nicht beschäftigt". Das Ändern des System-Cron-Schedulers wirkt sich auch automatisch auf die Laufzeit des Skripts aus.

Der Nachteil ist, dass Sie keine direkte Kontrolle darüber haben, wann es ausgeführt wird. Wenn Sie eine direktere Kontrolle benötigen, verwenden Sie # 1.

1 wird am seltensten durch ein Systemupdate überschrieben. Obwohl 3 und 4 ziemlich sicher sein sollten. Es hängt jedoch alles davon ab, wie Sie aktualisieren. Ihre Distribution kann nach Belieben aktualisiert werden, aber nur 2 sind normalerweise dem Risiko eines Überschreibens ausgesetzt.

Schließlich würde ich Skripte in / usr / local / bin ablegen. Dies ist der "normale" Ort, an dem ich systemweite Dinge ablege, die nicht vom Paketmanager der Distribution verwaltet werden. / root / bin ist ebenfalls akzeptabel, wenn es nur von root ausgeführt wird. Dies ist jedoch alles meistens Geschmack.

coteyr
quelle
0

Alle oben genannten Funktionen funktionieren, und keine der oben genannten Optionen sollte durch Aktualisierungen überschrieben werden. Die tatsächliche Wahl hängt von der Meinung ab - drei verschiedene Personen haben oft mindestens zwei, wenn nicht drei verschiedene Antworten.

John
quelle