Por Que o cron Nao Esta Executando - Solucao de Problemas do crontab no Linux

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:

  1. Verificar crontab: crontab -l
  2. Visualizar logs: grep CRON /var/log/syslog
  3. Verificar caminho: Use caminhos absolutos no crontab
  4. Verificar permissoes: Bit de execucao definido?
  5. 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 minutos
  • 0 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

Proximas Leituras