Existe uma maneira de validar o formato do / etc / crontab?

33

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?

    
por Ben K. 21.07.2009 / 21:44

5 respostas

13

Outra solução mais recente é o script python chkcrontab

    
por 30.08.2013 / 04:18
13

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)

    
por 09.01.2016 / 19:43
11

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

    
por 21.07.2009 / 21:44
2

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.

    
por 31.07.2017 / 16:27
0

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.
    
por 07.10.2016 / 16:38