GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

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.


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. So verhindern Sie, dass Nicht-Root-Benutzer einen Crontab-Eintrag erstellen

  3. Shell-Befehl in Jenkins als Root-Benutzer ausführen?

  4. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

  5. Unterschied zwischen /etc/crontab und crontab -e

Verstehen der /etc/passwd-Datei

Der richtige Weg zum Bearbeiten von /etc/passwd- und /etc/group-Dateien unter Linux

Wie bearbeite ich Konfigurationsdateien?

Wie wird /etc/motd aktualisiert?

Was ist die Datei /etc/passwd unter Linux?

Unterschied zwischen /etc/hosts und /etc/resolv.conf