Como criar um Cron Job no Linux

Guia completo para criar, configurar e gerenciar tarefas agendadas com cron no Linux.

1

Abrir o crontab do usuário

O comando crontab -e abre o editor de agendamentos do usuário atual:

# Abrir crontab para edição $ crontab -e # Para usuário root (requer sudo) $ sudo crontab -e # Para usuário específico $ sudo crontab -e -u username
2

Entender a sintaxe

# Formato: # MIN HORA DIA_MÊS MÊS DIA_SEMANA COMANDO * * * * * /caminho/script.sh # Exemplos: */5 * * * * /scripts/monitorar.sh # A cada 5 min 0 2 * * * /scripts/backup.sh # Todo dia às 2h 0 9 * * 1-5 /scripts/relatorio.sh # Dias úteis às 9h 0 0 1 * * /scripts/mensal.sh # 1° de cada mês
3

Adicionar um cron job

# Exemplo: backup todo dia às 2h da manhã 0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1 # Exemplo: limpar logs antigos todo domingo às 3h 0 3 * * 0 find /var/log -name "*.log" -mtime +7 -delete # Exemplo: script Python a cada 5 minutos */5 * * * * /usr/bin/python3 /scripts/monitor.py

Após editar, salve com Ctrl+O (nano) ou :wq (vim).

4

Verificar e gerenciar cron jobs

# Listar todos os cron jobs do usuário atual $ crontab -l # Remover todos os cron jobs do usuário $ crontab -r # Verificar se o serviço cron está ativo $ sudo systemctl status cron # Debian/Ubuntu $ sudo systemctl status crond # CentOS/RHEL # Ver log de execuções $ grep CRON /var/log/syslog # Ubuntu/Debian $ grep CRON /var/log/cron # CentOS/RHEL

Boas práticas

  • Use caminhos absolutos: sempre use /usr/bin/python3 em vez de apenas python3
  • Redirecione saída: use >> /var/log/myjob.log 2>&1 para capturar stdout e stderr
  • Defina variáveis: adicione MAILTO=seu@email.com no topo do crontab para receber erros
  • Teste antes: execute o script manualmente antes de agendar
  • Use flock: para scripts longos, use flock para evitar execuções sobrepostas
⚡ Gerar expressão CRONSintaxe CRONExemplos prontos