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?

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.


@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.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.