Qual é a diferença entre cron.d (como em /etc/cron.d/) e crontab?

18

Qual é a principal diferença entre o diretório cron.d (como em /etc/cron.d/) e crontab?

Tanto quanto eu entendo, pode-se criar um arquivo como /etc/cron.d/my_non_crontab_cronjobse colocar o que se quiser dentro dele, da mesma maneira que se poderia colocá-los no crontabcaminho crontab -e.

Então, qual é a principal diferença entre os dois?

Arcticooling
fonte
localização no sistema e formato.
Rui F Ribeiro
Formato? De dois exemplos que eu já vi, ele também tem a sintaxe das 5 unidades de tempo, ou estou confundindo isso crontab.
Arcticooling 15/01/19

Respostas:

24

As diferenças estão documentadas em detalhes na página de cron(8)manual do Debian. A principal diferença é que ela /etc/cron.dé preenchida com arquivos separados, enquanto crontabgerencia um arquivo por usuário; é, portanto, mais fácil gerenciar o conteúdo do /etc/cron.duso de scripts (para instalação e atualizações automatizadas) e mais fácil gerenciar crontabusando um editor (para os usuários finais, na verdade).

Outras diferenças importantes são que nem todas as distribuições suportam /etc/cron.de que os arquivos /etc/cron.dprecisam atender a um certo número de requisitos (além de serem trabalhos cron válidos): eles devem ser de propriedade do root e devem estar de acordo com run-partsas convenções de nomenclatura ( sem pontos , apenas letras, dígitos, sublinhados e hífens).

Se você está pensando em usar /etc/cron.d, é geralmente vale a pena considerar um dos /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, ou /etc/cron.monthlyem seu lugar.

Stephen Kitt
fonte
1
E, para um exemplo do mundo real, os itens cron.dnormalmente são adicionados via instalação do pacote, enquanto os vários crontabarquivos estão cheios de coisas criadas por um usuário correspondente. IE, o pacote certbotou letsencryptcoloca uma entrada cron.d- antes que o pacote estivesse disponível, o sysadmin (root) adicionaria uma entrada no usuário raiz crontabapontando para um script de shell / etc. para manter os certificados atualizados.
ivanivan
Obrigado Stephen! Por que você recomenda o uso de diretórios cron por hora / semanal / mensal? E BTW, por que a página do manual é chamada cron (8), para que serve o 8 (a página do manual do crontab chamada crontab (1)).
Arcticooling 15/01
1
@Arcticooling, veja esta pergunta para uma explicação sobre o(8)
user4556274 15/18/18
Os diretórios de hora em hora etc. simplificam a adição de tarefas (não é necessário descobrir a sintaxe exata) e, mais importante, permitem que o sistema varie o tempo real de execução, dependendo das circunstâncias; isso é particularmente útil em sistemas que nem sempre estão ativados anacron.
Stephen Kitt
1
A desvantagem dos hourly|daily|weekly|monthlydiretórios é que (AFAICT), eles sempre são executados como root e não suportam diretamente a execução com menos privilégios.
precisa saber é
5

Eu diria que a principal diferença é a óbvia: /etc/crontabe /etc/cron.dnão é modificável por usuários regulares, enquanto os crontabs por usuário em /var/spool/cronque a crontabferramenta edita, são. (Sujeito cron.allowe cron.deny, é claro.) É claro que em um sistema em que você é o administrador, você também pode usá-lo. Em um sistema compartilhado, os usuários regulares podem usar apenas um.

Relacionado a isso, está o campo extra nos arquivos de todo o sistema, o nome de usuário sob o qual a tarefa é executada.

ilkkachu
fonte