A razão mais frequente pela qual vi o cron falhar em um cronograma declarado incorretamente. É necessário especificar um trabalho agendado para 23:15, em 15 23 * * *
vez de * * 11 15 *
ou 11 15 * * *
. O dia da semana para trabalhos após a meia-noite também fica confuso. MF é 2-6
depois da meia-noite, não 1-5
. As datas específicas geralmente são um problema, pois raramente as usamos * * 3 1 *
em 3 de março. Se você não tiver certeza, verifique suas agendas cron online em https://crontab.guru/ .
Se o seu trabalho com plataformas diferentes, usando opções não suportadas, como 2/3
especificações em tempo, também pode causar falhas. Esta é uma opção muito útil, mas não universalmente disponível. Também encontrei problemas com listas como 1-5
ou 1,3,5
.
O uso de caminhos não qualificados também causou problemas. O caminho padrão é geralmente, /bin:/usr/bin
portanto, apenas os comandos padrão serão executados. Esses diretórios geralmente não têm o comando desejado. Isso também afeta scripts usando comandos não padrão. Outras variáveis de ambiente também podem estar ausentes.
Derrubar completamente um crontab existente me causou problemas. Agora carrego de uma cópia do arquivo. Isso pode ser recuperado do crontab existente usando crontab -l
se ele for derrotado. Eu mantenho a cópia do crontab em ~ / bin. É comentado por toda parte e termina com a linha # EOF
. Isso é recarregado diariamente a partir de uma entrada do crontab como:
#! / usr / bin / crontab
# Recarregar este crontab
#
54 12 * * * $ {HOME} / bin / crontab
O comando reload acima depende de um crontab executável com um caminho estridente executando o crontab. Alguns sistemas requerem o crontab em execução no comando e especificando o arquivo. Se o diretório for compartilhado em rede, geralmente uso crontab.$(hostname)
como o nome do arquivo. Isso acabará corrigindo os casos em que o crontab errado está carregado no servidor errado.
O uso do arquivo fornece um backup do que o crontab deve ser e permite que as edições temporárias (a única vez que eu uso crontab -e
) sejam restauradas automaticamente. Existem cabeçalhos disponíveis que ajudam a acertar os parâmetros de agendamento. Eu os adicionei quando usuários inexperientes editariam um crontab.
Raramente, encontrei comandos que exigem entrada do usuário. Eles falham no crontab, embora alguns funcionem com o redirecionamento de entrada.
crontab -e
para que o cron tenha efeito. Por exemplo, usando o vim, edito o arquivo e o uso:w
para escrevê-lo, mas o trabalho não é adicionado ao cron até que eu saia também. Então, eu não vou ver o trabalho até depois:q
também.