Por Que o cron Nao Esta Executando - Solucao de Problemas do crontab no Linux
O Que Voce Vai Aprender
- Como verificar e editar o crontab
- O que fazer quando "a tarefa cron foi configurada mas nao esta executando"
- Como investigar logs do cron e distinguir padroes tipicos de falha
Resumo Rapido
Quando o cron nao esta funcionando, verifique nesta ordem:
- Verificar crontab:
crontab -l - Visualizar logs:
grep CRON /var/log/syslog - Verificar caminho: Use caminhos absolutos no crontab
- Verificar permissoes: Bit de execucao definido?
- Testar manualmente: Execute o comando como root ou usuario
Pre-requisitos
- SO: Ubuntu
- Acesso
sudo
1. O Que e o cron?
Conclusao: cron e um daemon que executa tarefas agendadas via crontab para automacao.
cron e um daemon que executa tarefas agendadas. Combinado com crontab, voce pode automatizar:
- Rotacao periodica de logs
- Backups
- Envio de metricas
- Processamento em lote
2. Como Verificar/Editar o crontab
Conclusao: Use crontab -l para visualizar e crontab -e para editar; sudo muda para outros usuarios.
2-1. Visualizar crontab do usuario atual
$ crontab -l
2-2. Editar crontab
$ crontab -e
2-3. Visualizar crontab de outro usuario (requer sudo)
$ sudo crontab -u username -l
2-4. Visualizar crontab do root
$ sudo crontab -l
3. Sintaxe do Agendamento
Conclusao: Os campos de agendamento sao minuto, hora, dia, mes e dia da semana nessa ordem.
* * * * * comando | | | | | | | | | +-- Dia da semana (0-7, 0 e 7 = Domingo) | | | +---- Mes (1-12) | | +------ Dia (1-31) | +-------- Hora (0-23) +---------- Minuto (0-59)
Exemplos:
0 3 * * *- Todo dia as 3:00 da manha*/5 * * * *- A cada 5 minutos0 0 * * 0- Todo domingo a meia-noite
4. Verificando Logs Quando Nao Executa
Conclusao: Verifique logs via grep CRON /var/log/syslog ou journalctl -u cron para encontrar execucoes.
4-1. Verificar logs do cron
$ grep CRON /var/log/syslog | tail -n 50
4-2. Acompanhamento de log em tempo real
$ tail -f /var/log/syslog | grep CRON
4-3. Usando journalctl
$ sudo journalctl -u cron -n 100
Se os logs mostram "(CRON) CMD..." mas nada acontece, o proprio comando esta falhando. Execute-o manualmente para verificar.
5. Os 5 Erros Mais Comuns
Conclusao: Causas comuns: caminhos relativos, bit de execucao ausente, env nao definido, usuario errado, erros de digitacao.
Erro 1: Nao usar caminhos absolutos
O cron executa com um ambiente minimo. Comandos como python ou node podem nao ser encontrados.
Solucao: Use caminhos completos como /usr/bin/python3
Erro 2: Scripts sem permissao de execucao
$ chmod +x /path/to/script.sh
Erro 3: Variaveis de ambiente nao definidas
Variaveis como PATH, HOME podem nao estar disponiveis no cron.
Solucao: Defina-as no topo do crontab ou no script.
Erro 4: Editando o crontab do usuario errado
Usar crontab -e como usuario vs sudo crontab -e resulta em crontabs diferentes.
Erro 5: Erro de digitacao na sintaxe do agendamento
Um espaco ou numero no lugar errado pode impedir a execucao completamente.
6. Passos para Solucao de Problemas
Conclusao: Verifique o crontab, cheque o servico, teste manualmente e adicione redirecionamento de saida.
Passo 1: Verificar se o crontab existe
$ crontab -l $ sudo crontab -l
Passo 2: Verificar o servico cron
$ sudo systemctl status cron
Passo 3: Testar o comando manualmente
$ /full/path/to/script.sh
Passo 4: Adicionar redirecionamento de saida para depuracao
* * * * * /path/to/script.sh >> /tmp/cron.log 2>&1
Resumo (Template para Copiar e Colar)
# Verificar crontab crontab -l sudo crontab -l # Editar crontab crontab -e # Verificar servico cron sudo systemctl status cron # Visualizar logs grep CRON /var/log/syslog | tail -n 50 sudo journalctl -u cron -n 100