Wie kommt es, dass sich crontab -e von weniger / etc / crontab unterscheidet?

10

Ich bin ziemlich neu in Unix und Cron. Ich wollte gerade versuchen, Cron zu einer vorhandenen Cron-Datei hinzuzufügen. Ich habe gelesen, du könntest das machen crontab -e. Das Verwirrende für mich ist nur, dass crontab -eandere Cron / Befehle angezeigt werden als less /etc/crontab- wie kommt es? Welches ist der richtige Weg / die richtige Datei zum Bearbeiten?

Alex
quelle

Antworten:

13

Obwohl die Antwort von @X Tian Informationen zu den verschiedenen Dateien für crontab enthält, sind die wesentlichen Informationen zu Ihrer Frage folgende:

crontab -ebearbeitet die crontab-Datei des Benutzers (gespeichert im /var/spool/cron/crontabs/Verzeichnis auf aktuellen Debian-Systemen, aber YMMV) oder erstellt eine neue und nicht /etc/crontab. Ähnliches gilt für crontab -l(Crontab-Datei auflisten) und crontab -r(Crontab-Datei entfernen).

Für alle Cron-Jobs, die unter dem Konto eines Benutzers ausgeführt werden sollen, sollten Sie verwenden crontab -e. Für Systemjobs sollten Sie eine Datei unter hinzufügen /etc/cron.d, falls vorhanden. unter /etc/cron.{hourly|daily|weekly|monthly}(aber diese dürfen nicht wie ein Paketname benannt werden!), wenn dies Ihrem Zweck entspricht; oder fügen Sie eine Zeile hinzu /etc/crontab. Beachten Sie jedoch, dass dies /etc/crontabmöglicherweise durch ein Systemupdate überschrieben wird.

Dubu
quelle
@Stephane Chazelas Vielen Dank für die Klarstellung mit Ihrer Bearbeitung. Das /var/spool/cron/Verzeichnis ist eine Linux-Spezialität (siehe Dateihierarchiestandard ) und der Speicherort kann auf anderen Systemen als einem aktuellen Debian variieren.
Dubu
3

Sie möchten wirklich die Handbuchseiten lesen man cronundman crontab

Hier ist ein Auszug, der Ihre Frage abdeckt. Vonman cron

HINWEISE cron durchsucht seinen Spool-Bereich (/ var / spool / cron / crontabs) nach crontab-Dateien (die nach Konten in / etc / passwd benannt sind); gefundene Crontabs werden in den Speicher geladen. Beachten Sie, dass auf crontabs in diesem Verzeichnis nicht direkt zugegriffen werden darf - der Befehl crontab sollte verwendet werden, um auf sie zuzugreifen und sie zu aktualisieren.

   cron also reads /etc/crontab, which is in a slightly  different  format
   (see  crontab(5)).   Additionally, cron reads the files in /etc/cron.d:
   it treats  the  files  in  /etc/cron.d  as  in  the  same  way  as  the
   /etc/crontab  file  (they  follow the special format of that file, i.e.
   they  include  the  user  field).  However,  they  are  independent  of
   /etc/crontab:  they  do  not, for example, inherit environment variable
   settings from it. The intended purpose of  this  feature  is  to  allow
   packages  that  require  finer  control  of  their  scheduling than the
   /etc/cron.{daily,weekly,monthly} directories to add a crontab  file  to
   /etc/cron.d. Such files should be named after the package that supplies
   them. Files must conform to the same naming convention as used by  run-
   parts(8):  they  must  consist solely of upper- and lower-case letters,
   digits, underscores, and hyphens. If the -l option is  specified,  then
   they must conform to the LSB namespace specification, exactly as in the
   --lsbsysinit option in run-parts.
X Tian
quelle
1
Sie sollten angeben, von welcher Cron-Implementierung und welcher Version auf welchem ​​Betriebssystem und von welcher Version Sie diese zitieren. cronist etwas, das von Betriebssystem zu Betriebssystem sehr unterschiedlich ist, und bei einigen können Sie zwischen mehreren Implementierungen wählen.
Stéphane Chazelas