Lösung 1:
Es kann hilfreich sein zu beachten, dass Jobs in einer persönlichen Crontab (crontab -e
) werden immer als ihr Besitzer ausgeführt, wobei /etc/crontab
enthält eine zusätzliche obligatorische <user>
Feld, mit dem ein Administrator den Job so konfigurieren kann, dass er als Nicht-Root-Benutzer ausgeführt wird.
Das Bearbeiten der System-Crontab oder das Einrichten einer persönlichen Crontab für Root sind wahrscheinlich etwas tragbarer, nicht spezifisch für bestimmte Linux-Distributionen und wohl bequemer für eine Person zu pflegen, mit allen Jobs in einer einzigen Datei, aber:
Ich persönlich bevorzuge eine dritte Option :Lassen Sie für jede geplante Aufgabe entweder
fallen- eine Datei in
/etc/cron.d/
mit einem Cron-Snippet - eine ausführbare Datei (Skript) im entsprechenden
/etc/cron.[hourly |daily |weekly |monthly]
Verzeichnis.
Das ist einfacher zu skripten (Sie können solche Dateien einfach erstellen/überschreiben/löschen und müssen sich nicht mit dem Inhalt einer einzelnen crontab-Datei herumschlagen) und das funktioniert gut mit Konfigurationsverwaltungswerkzeugen, und das sind Paketmanager bereits sowieso tun.
Jobs/Skripte in /etc/cron.[hourly |daily |weekly |monthly]
werden immer als root ausgeführt, wobei die Cron-Snippets in /etc/cron.d/
sowohl das Festlegen eines benutzerdefinierten Zeitplans als auch das Ausführen als ein anderer Benutzer mit demselben obligatorischen <user>
zulassen Feld gefunden in /etc/crontab
.
Lösung 2:
Soweit ich mich erinnere, crontab -e
hat den zusätzlichen Vorteil, dass es die crontab-Syntax überprüft, bevor es installiert wird, und die vorherige fehlert und wieder herstellt, wenn Sie einen Fehler machen. Auf diese Weise wird alles, was zuvor funktioniert hat, nicht plötzlich anhalten, wenn Sie die Syntax falsch verstehen. Ich denke, die beste Vorgehensweise ist die Verwendung der Dienstprogramme, wie z. B. das Ausführen von visudo
anstatt /etc/sudoers
zu bearbeiten direkt.
Lösung 3:
Es ist wirklich eine Frage des Stils, es gibt einen Grund, warum das Betriebssystem mehrere Methoden anbietet. Seien Sie einfach konsistent und mischen Sie nicht, wenn Sie niemanden verwirren möchten (oder sich selbst, nachdem Sie sich einige Zeit nicht mit dem System beschäftigt haben) - wenn es schwierig ist, zu sehen, welche Aufgaben tatsächlich auf dem gesamten Host geplant sind, neigt es dazu mit bösen Überraschungen enden.
Lösung 4:
Um sicherzugehen, dass ein Cron-Job hinzugefügt wird, der die Rechte eines bestimmten Benutzers erfordert, verwende ich persönlich den folgenden Befehl:
# crontab -u <user> -e
Sie können sudo
hinzufügen auch.
Wie @rackandboneman feststellte, besteht keine Notwendigkeit, mit /etc/cron.d/-Dateien herumzuspielen. Wenn es um die Cronjobs des Benutzers geht, verwenden Sie die Funktionen von crontab
Befehl.