Ich richte regelmäßige Systemwartungsaufgaben ein, die als root ausgeführt werden müssen. Ich plane, die Cron-Variante zu verwenden, die standardmäßig in Ubuntu 14.04 LTS enthalten ist.
Ich sehe den vorherigen Administrator (der seitdem das Unternehmen verlassen hat), der / etc / crontab direkt bearbeitet hat. Ich verstehe jedoch, dass ein anderer möglicher Ansatz darin besteht, crontab -e
als root zu arbeiten. Gibt es überzeugende Argumente für die Verwendung des einen oder anderen oder liegt es an den Vorlieben?
linux
cron
ubuntu-14.04
marcv81
quelle
quelle
Antworten:
Es kann nützlich sein, zu beachten, dass Jobs in einer persönlichen crontab (
crontab -e
) immer als deren Eigentümer ausgeführt werden, wobei/etc/crontab
ein zusätzliches Pflichtfeld enthalten<user>
ist, 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 portabler, nicht spezifisch für bestimmte Linux-Distributionen und für eine Person wahrscheinlich bequemer zu warten, da alle Jobs in einer einzigen Datei gespeichert sind, aber:
Persönlich bevorzuge ich eine dritte Option : für jede geplante Aufgabe fallen entweder
/etc/cron.d/
mit einem Cron-Snippet/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 um den Inhalt einer einzelnen crontab-Datei kümmern) und das funktioniert gut mit Konfigurationsmanagement-Tools, und das sind Paketmanager bereits trotzdem 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 anderer Benutzer mit demselben Pflichtfeld<user>
in ermöglichen/etc/crontab
.quelle
/etc/crontab
ist, dass bei jeder Aktualisierung descron
Pakets eine Zusammenführung erforderlich ist . Sie haben dieses Problem nicht, wenn Sie einfach eine neue Datei zu einem der/etc/cron.*
Verzeichnisse hinzufügen ./etc/cron.[hourly |daily |weekly |monthly]
hält ausführbaren Dateien während/etc/cron.d
hält crontabs. Ansonsten +1.Wie ich mich am besten erinnere,
crontab -e
hat es den zusätzlichen Vorteil, dass es die crontab-Syntax vor der Installation überprüft und die vorherige fehlerhaft ausführt und wiederherstellt, wenn Sie einen Fehler machen. Auf diese Weise hört alles, was zuvor funktioniert hat, nicht plötzlich auf, wenn die Syntax falsch ist. Ich denke, die beste Vorgehensweise besteht darin, die Dienstprogramme zu verwenden,visudo
anstatt sie/etc/sudoers
direkt zu bearbeiten .quelle
/etc/crontab
Zeile mit einem Benutzernamen in der 6. Spalte eingeben ). - Obwohl ich behaupten möchte, dass die Verwendung interaktiver Tools kein "Best Practice" ist , sollten Sie mit Tools wie Puppet / Salt / Ansible usw. automatisieren und Server nicht mehr von Hand konfigurieren. Auf der anderen Seite, wenn Sie altmodisch sind, dann verwenden Sie in der Tat Ihre Werkzeuge.Es ist wirklich eine Stilfrage, es gibt einen Grund, warum das Betriebssystem mehrere Methoden anbietet. Seien Sie einfach konsistent und passen Sie nicht zusammen, wenn Sie niemanden verwirren möchten (oder wenn Sie sich nach einiger Zeit nicht mit dem System befassen) in bösen Überraschungen enden.
quelle
Um sicher zu gehen, dass ein Cron-Job hinzugefügt wird, für den bestimmte Benutzerrechte erforderlich sind, verwende ich persönlich den folgenden Befehl:
Sie können auch hinzufügen
sudo
.Wie @rackandboneman feststellte, besteht keine Notwendigkeit, sich mit /etc/cron.d/ -Dateien herumzuschlagen. Wenn es um die Cron-Jobs des Benutzers geht, verwenden Sie die
crontab
Befehlsfunktionen.quelle