Tutorial
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/python3em vez de apenaspython3 - Redirecione saída: use
>> /var/log/myjob.log 2>&1para capturar stdout e stderr - Defina variáveis: adicione
MAILTO=seu@email.comno topo do crontab para receber erros - Teste antes: execute o script manualmente antes de agendar
- Use flock: para scripts longos, use
flockpara evitar execuções sobrepostas