Quelle est la principale différence entre le répertoire cron.d (comme dans /etc/cron.d/
) et crontab
?
Autant que je sache, on pourrait créer un fichier comme /etc/cron.d/my_non_crontab_cronjobs
et y mettre tout ce que l'on veut, comme on le mettrait dans crontab
via crontab -e
.
Quelle est donc la principale différence entre les deux?
Les différences sont documentées en détail dans la page de manuel cron(8)
dans Debian. La principale différence est que /etc/cron.d
est rempli de fichiers séparés, tandis que crontab
gère un fichier par utilisateur; il est ainsi plus facile de gérer le contenu de /etc/cron.d
en utilisant des scripts (pour une installation et des mises à jour automatisées), et plus facile à gérer crontab
en utilisant un éditeur (pour les utilisateurs finaux vraiment).
D'autres différences importantes sont que toutes les distributions ne prennent pas en charge /etc/cron.d
, et que les fichiers dans /etc/cron.d
doivent répondre à un certain nombre d'exigences (au-delà d'être des tâches cron valides): elles doivent appartenir à root et doivent être conformes à run-parts
’Conventions de dénomination ( pas de points , uniquement des lettres, des chiffres, des traits de soulignement et des tirets).
Si vous envisagez d'utiliser /etc/cron.d
, il vaut généralement la peine d'envisager l'un des /etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, ou /etc/cron.monthly
au lieu.
Je dirais que la principale différence est évidente: /etc/crontab
et /etc/cron.d
ne sont pas modifiables par les utilisateurs réguliers, tandis que les crontabs par utilisateur dans /var/spool/cron
que sont les modifications de l'outil crontab
. (Sujet à cron.allow
et cron.deny
, bien sûr.) Bien sûr, sur un système dont vous êtes l'administrateur, vous pouvez utiliser l'un ou l'autre. Sur un système partagé, les utilisateurs réguliers ne peuvent en utiliser qu'un.
Le champ supplémentaire dans les fichiers à l'échelle du système, le nom d'utilisateur sous lequel le travail s'exécute est lié à cela.