it-swarm.com.de

Soll ich / etc / crontab bearbeiten oder crontab -e als root ausführen?

Ich richte regelmäßige Systemwartungsaufgaben ein, die als Root ausgeführt werden müssen. Ich plane, die Cron-Variante zu verwenden, die standardmäßig mit Ubuntu 14.04 LTS geliefert wird.

Ich sehe, dass der vorherige Administrator (der das Unternehmen inzwischen verlassen hat)/etc/crontab direkt bearbeitet hat. Ich verstehe jedoch, dass ein anderer möglicher Ansatz darin besteht, crontab -e als root. Gibt es zwingende Argumente, das eine oder das andere zu verwenden, oder liegt es an den Vorlieben?

43
marcv81

Es kann nützlich sein zu beachten, dass Jobs in einem persönlichen Crontab (crontab -e) werden immer als ihr Besitzer ausgeführt, wobei /etc/crontab enthält ein zusätzliches obligatorisches <user> Feld, in 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 ist wahrscheinlich etwas portabler, nicht spezifisch für bestimmte Linux-Distributionen und für eine Person wahrscheinlich bequemer . zu pflegen, mit allen Jobs in einer einzigen Datei, aber:

Persönlich bevorzuge ich ein dritte Option: für jeden geplanten Task-Drop

  • eine Datei in /etc/cron.d/ mit einem Cron-Snippet
  • eine ausführbare Datei (Skript) im relevanten /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 genau das sind Paketmanager bereits sowieso tun.

Jobs/Skripte in /etc/cron.[hourly |daily |weekly |monthly] werden immer als root ausgeführt, wobei die Cron-Schnipsel in /etc/cron.d/ ermöglichen sowohl das Festlegen eines benutzerdefinierten Zeitplans als auch das Ausführen als anderer Benutzer mit demselben obligatorischen <user> Feld gefunden in /etc/crontab.

64
HBruijn

Soweit ich mich erinnere, hat crontab -e Den zusätzlichen Vorteil, dass es die Crontab-Syntax vor der Installation überprüft und bei einem Fehler die vorherige Fehler- und Wiederherstellungssyntax überprüft. Auf diese Weise hört alles, was zuvor funktioniert hat, nicht plötzlich auf, wenn Sie die Syntax falsch verstehen. Ich denke, die beste Vorgehensweise besteht darin, die Dienstprogramme zu verwenden, z. B. visudo auszuführen, anstatt /etc/sudoers Direkt zu bearbeiten.

15
Gargravarr

Es ist wirklich eine Stilfrage, 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 befasst haben). Wenn es schwierig ist zu erkennen, welche Aufgaben tatsächlich auf dem gesamten Host geplant sind, ist dies in der Regel der Fall in bösen Überraschungen enden.

2
rackandboneman

Um sicherzugehen, dass ein Cron-Job hinzugefügt wird, für den die Rechte eines bestimmten Benutzers erforderlich sind, verwende ich persönlich den folgenden Befehl:

 # crontab -u <user> -e

Sie können auch Sudo hinzufügen.

Wie @rackandboneman sagte, besteht keine Notwendigkeit, sich mit /etc/cron.d/-Dateien herumzuschlagen. Wenn es um Cron-Jobs des Benutzers geht, verwenden Sie die Funktionen des Befehls crontabcommand.

2
aesnak