Outra solução mais recente é o script python chkcrontab
Eu prefiro colocar tarefas agendadas em / etc / crontab para que eu possa ver rapidamente o que está agendado para rodar, independentemente de qual usuário a tarefa é executada.
A única pegadinha é que o formato não é validado ao salvar, ao contrário de crontab -e - então um caractere perdido pode silenciosamente quebrar o cron inteiro.
Existe uma maneira de validar o formato / etc / crontab antes / depois de salvar?
Outra solução mais recente é o script python chkcrontab
A única maneira confiável que encontrei é verificar o log.
cron
verifica /etc/crontab
a cada minuto e registra uma mensagem indicando que foi recarregada ou que encontrou um erro.
Então, depois da edição, execute isto:
sleep 60; grep crontab /var/log/syslog | tail
Ou, para não esperar um minuto inteiro, mas apenas até o próximo minuto + 5 segundos:
sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail
Exemplo de saída com um erro:
Jan 9 19:10:57 r530a cron[107258]: Error: bad minute; while reading /etc/crontab
Jan 9 19:10:57 r530a cron[107258]: (*system*) ERROR (Syntax error, this crontab file will be ignored)
Boa saída:
Jan 9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)
Isso é no Debian 8. Em outros sistemas, o cron pode logar em um arquivo diferente.
(Eu pensei que poderia evitar procurar o arquivo de log correto usando journalctl -u cron
do systemd, mas isso não me mostrou essas entradas de log e parece ter parado de registrar eventos cron 2 dias atrás por algum motivo)
Wicked cool shell scripts tem um script de shell que valida os arquivos crontab.
Você pode obter o arquivo zip contendo o script aqui
O script é chamado verifycron
Encontrei esta solução interessante aqui: link
Ele não apenas valida o crontab, ele lhe diz explicitamente o que e quando o crontab será executado, e destaca onde estão os erros.
No Ubuntu, parece que posso apenas executar:
crontab path/to/crontab/file
NOTA: isso tem o efeito colateral de iniciar este cronjob (obrigado @NZD)
Se o arquivo for inválido, ocorrerei um erro, como:
"crontab":11: bad minute
errors in crontab file, can't install.