Pourquoi crontab -e est différent de less / etc / crontab?

11

Im assez nouveau pour unix et crons, j'étais sur le point d'essayer d'ajouter crons à un fichier cron existant. J'ai lu que tu pouvais faire ça avec crontab -e. La chose déroutante pour moi est juste que cela crontab -emontre des crons / commandes différents de less /etc/crontab- comment ça se fait? Lequel est le bon moyen / fichier à modifier?

Alex
la source

Réponses:

14

Bien que la réponse de @X Tian contienne des informations sur les différents fichiers pour crontab, les informations essentielles concernant votre question sont les suivantes:

crontab -eédite le fichier crontab de l'utilisateur (stocké dans le /var/spool/cron/crontabs/répertoire sur les systèmes Debian actuels, mais YMMV) ou en crée un nouveau, et non /etc/crontab. Similaire pour crontab -l(lister le fichier crontab) et crontab -r(supprimer le fichier crontab).

Pour tous les travaux cron qui doivent être exécutés sous le compte d'un utilisateur, vous devez utiliser crontab -e. Pour les travaux système, vous devez ajouter un fichier sous /etc/cron.d, s'il existe; sous /etc/cron.{hourly|daily|weekly|monthly}(mais ceux-ci ne doivent pas être nommés comme un nom de package!), si cela correspond à votre objectif; ou ajoutez une ligne à /etc/crontab. Mais sachez que cela /etc/crontabpourrait être remplacé par une mise à jour du système.

Dubu
la source
@Stephane Chazelas Merci d'avoir clarifié avec votre montage. Le /var/spool/cron/répertoire est une spécialité Linux (voir la norme de hiérarchie des fichiers ) et l'emplacement peut varier sur des systèmes autres qu'une Debian actuelle.
Dubu
3

Vous voulez vraiment lire les pages de manuel man cronetman crontab

Voici un extrait qui couvre votre question. Deman cron

NOTES cron recherche dans sa zone de spoule (/ var / spool / cron / crontabs) les fichiers crontab (qui sont nommés d'après les comptes dans / etc / passwd); les crontabs trouvés sont chargés en mémoire. Notez que les crontabs de ce répertoire ne doivent pas être accessibles directement - la commande crontab doit être utilisée pour y accéder et les mettre à jour.

   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
la source
1
Vous devez spécifier quelle implémentation cron et quelle version de celle-ci sur quel système d'exploitation et quelle version de celle-ci vous citez cela. cronest quelque chose qui varie beaucoup d'un OS à l'autre et sur certains, vous pouvez choisir entre plusieurs implémentations.
Stéphane Chazelas