Captura de saída·MAILTO·checklist de verificação de logs
O cron, quando falha, geralmente passa silenciosamente. Se a expressão está correta segundo esta ferramenta e mesmo assim a tarefa não roda, é provável que o problema não esteja na expressão, e sim no ambiente de execução. A seguir, organizamos em ordem como reduzir as causas possíveis.
Registre a saída em um arquivo. Por padrão, o cron envia a saída padrão e a saída de erro da tarefa por e-mail, mas, se o e-mail não estiver configurado, elas simplesmente desaparecem. Ao acrescentar >> /var/log/myjob.log 2>&1 após o comando, você grava tanto o stdout quanto o stderr no arquivo de log e pode verificar imediatamente o que aconteceu.
Receba notificações com o MAILTO. Se você colocar MAILTO="you@example.com" no topo do crontab, a saída e os erros da tarefa são enviados para esse endereço. É a proteção mais simples contra falhas silenciosas. Por outro lado, se não quiser receber e-mails, deixe vazio com MAILTO="".
Consulte os logs do sistema. Em distribuições Debian e Ubuntu, use grep CRON /var/log/syslog; em ambientes systemd, use journalctl -u cron (ou crond) para verificar se o cron disparou a tarefa. A distinção importante aqui é que 'tentou executar' e 'o script foi bem-sucedido' são coisas diferentes.
Por fim, um checklist das causas comuns. ① Você especificou todos os comandos e arquivos com caminho absoluto? ② Você declarou o PATH necessário no crontab? ③ O script tem permissão de execução (chmod +x)? ④ Você colocou a tarefa no crontab do usuário correto (o crontab do root e o de um usuário comum são separados)? Verifique esses quatro pontos e valide a própria expressão novamente com este interpretador.