/etc/crontab
é o local histórico dos trabalhos de "sistema". Não é necessariamente usado em todos os sistemas (por exemplo, RedHat 7 e derivados tem uma entrada "vazia"), ou pode ter comandos para chamar cron.daily
e outros.
/etc/cron.d/*
é, essencialmente, o mesmo que /etc/crontab
, mas dividido em arquivos separados. Isso torna mais fácil para os pacotes adicionar novas entradas do cron; basta colocá-los neste diretório.
Então, por exemplo, no CentOS 7:
% rpm -ql sysstat | grep cron
/etc/cron.d/sysstat
% sudo cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
Você pode ver essas entradas como o que estaria em /etc/crontab
.
Antes de o cron.d
ser criado, um script precisaria editar /etc/crontab
para fazer o mesmo trabalho, o que é mais trabalhoso e provavelmente dá errado.
/var/spool/cron/crontabs
é o material gerenciado pelo comando crontab
.
Então ...
Se uma tarefa cron for implantada por um pacote, o pacote deverá colocar o arquivo em /etc/cron.d/
. Ferramentas de automação empresarial também podem fazer isso.
Se um administrador de sistema (ou qualquer outro usuário) quiser adicionar um trabalho cron com crontab -e
, ele será colocado em /var/spool/cron/crontabs/