O Que e o Cron
O cron e um programa que ja vem instalado em todo servidor Linux. O trabalho dele e simples: ficar olhando o relogio e, na hora certa, rodar os comandos que voce agendou. Voce escreve a tarefa uma vez, e ela passa a se repetir sozinha, para sempre, sem voce precisar abrir o terminal de novo.
🧠 Analogia: O Despertador Programavel
Pense no cron como o despertador do seu celular, so que muito mais poderoso. No despertador, voce define um horario e uma acao: "07h, tocar a musica". No cron, voce define um horario e um comando: "03h, rodar o backup".
- •O despertador toca todo dia no mesmo horario, mesmo se voce nao estiver olhando.
- •O cron roda o comando todo dia no horario marcado, mesmo se ninguem estiver logado no servidor.
- •A diferenca: o despertador faz barulho; o cron faz trabalho (backup, limpeza, envio de email).
💡 Por que cron e tao usado
Todo trabalho que precisa se repetir no tempo e candidato a virar um cron: backup do banco de dados, limpeza de arquivos temporarios, renovacao de certificados, envio de relatorios, verificacao de sites no ar. Em vez de voce lembrar de fazer isso manualmente (e esquecer metade das vezes), o cron faz no piloto automatico. Cada tarefa agendada chama-se um cron job.
A Sintaxe do crontab: os 5 Campos
Cada linha de agendamento tem 5 campos de tempo seguidos do comando. Os 5 campos respondem, da esquerda para a direita: em que minuto, em que hora, em que dia do mes, em que mes, e em que dia da semana. Depois deles vem o comando que deve rodar.
A regra de ouro
O asterisco * quer dizer "qualquer valor". A tarefa so roda quando todos os campos batem com o relogio atual.
# minuto hora dia mes diasemana comando
* * * * * comando
# A linha acima roda a CADA MINUTO (tudo e *)
Exemplos para ler com calma
0 3 * * * # todo dia as 03h00
30 8 * * 1 # toda segunda-feira as 08h30
*/5 * * * * # a cada 5 minutos
0 */2 * * * # a cada 2 horas, no minuto 0
0 0 1 * * # todo dia 1o do mes, meia-noite
0 9 * * 1-5 # seg a sex as 09h00 (dias uteis)
O / significa "de N em N". O - e um intervalo. A virgula (1,15) lista valores especificos.
💡 Dica: use o crontab.guru
Na duvida sobre o que uma linha faz, cole-a no site crontab.guru. Ele traduz a expressao para portugues simples ("a cada 5 minutos", "todo domingo a meia-noite"). E a forma mais rapida de conferir se voce escreveu o horario certo antes de salvar.
crontab -e: Adicionando Tarefas
Para ver e editar as tarefas agendadas do seu usuario, voce usa o comando crontab. Ele abre um arquivo especial onde cada linha e um agendamento. Voce nao edita esse arquivo direto: deixa o comando crontab -e abrir o editor para voce.
Abra o editor de tarefas
$ crontab -e
# Na primeira vez, ele pergunta qual editor usar.
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
# Escolha 1 (nano) digitando 1 e Enter.
Adicione uma linha no fim do arquivo
# Roda todo dia as 03h00
0 3 * * * /home/usuario/backup.sh
Cada tarefa fica em uma linha. Use o caminho completo do script para evitar surpresas.
Salve e saia
# No nano: Ctrl+O, Enter (salvar), depois Ctrl+X (sair)
crontab: installing new crontab
A mensagem "installing new crontab" confirma que o cron ja registrou seu agendamento.
Comandos para gerenciar o crontab
# Editar as tarefas
$ crontab -e
# Ver (listar) as tarefas atuais
$ crontab -l
0 3 * * * /home/usuario/backup.sh
# Apagar TODAS as tarefas (cuidado)
$ crontab -r
⚠️ Erro Comum
Problema: "Meu script roda no terminal, mas o cron nao executa nada."
Solucao: Quase sempre e caminho. O cron roda com um ambiente quase vazio, sem o seu PATH. Use sempre caminhos completos (ex: /usr/bin/python3 /home/usuario/script.py em vez de so python3 script.py) e de permissao de execucao com chmod +x backup.sh.
Exemplos Praticos do Dia a Dia
Teoria so vale quando vira pratica. Aqui estao tres tarefas que praticamente todo servidor acaba precisando: um backup diario, uma limpeza de logs antigos e um relatorio semanal. Copie, adapte os caminhos e use.
💾 Backup diario do banco de dados
Todo dia as 02h00, compacta o banco e salva com a data no nome do arquivo.
# crontab -e e adicione:
0 2 * * * pg_dump app | gzip > /backups/app-$(date +\%F).sql.gz
# Resultado, um arquivo por dia:
/backups/app-2026-06-17.sql.gz
/backups/app-2026-06-18.sql.gz
No crontab, o sinal de porcentagem precisa virar \% (com barra), senao o cron o trata como quebra de linha.
🧹 Limpeza de logs antigos
Toda madrugada de domingo, apaga arquivos de log com mais de 30 dias.
# Domingo as 04h00 (dia da semana = 0)
0 4 * * 0 find /var/log/app -name "*.log" -mtime +30 -delete
-mtime +30 = modificado ha mais de 30 dias. Assim os logs nao enchem o disco do servidor.
📊 Relatorio semanal por email
Toda segunda as 08h00, roda um script que monta o relatorio da semana e envia.
# Segunda-feira (dia da semana = 1) as 08h00
0 8 * * 1 /usr/bin/python3 /home/usuario/relatorio.py
✓ O que FAZER
- ✓Usar caminho completo de scripts e binarios
- ✓Testar o comando no terminal antes de agendar
- ✓Rodar tarefas pesadas de madrugada
✗ O que NAO fazer
- ✗Usar caminhos relativos (ex:
./script.sh) - ✗Esquecer de escapar o
%com\% - ✗Agendar tudo no mesmo minuto (sobrecarrega)
Logs: Saber se o Cron Rodou
O cron e silencioso: ele roda no fundo e nao mostra nada na sua tela. Por isso, a pergunta mais comum e "sera que rodou?". A resposta vem dos logs. O sistema registra cada vez que um cron job dispara, e voce pode redirecionar a saida do seu comando para um arquivo proprio.
👁 Onde o cron registra a execucao
# Ubuntu/Debian: o log fica em syslog
$ grep CRON /var/log/syslog
Jun 17 03:00:01 srv CRON[1234]: (usuario) CMD (/home/usuario/backup.sh)
# Em muitos sistemas, tambem:
$ journalctl -u cron --since today
Essas linhas provam que o cron disparou o comando. Mas elas nao mostram o que o seu comando imprimiu nem se ele deu erro. Para isso, redirecione a saida.
Redirecionar a saida para um arquivo
Adicione >> arquivo.log 2>&1 no fim da linha. Assim, tanto a saida normal quanto os erros vao para o arquivo.
# Guarda saida e erros em backup.log
0 2 * * * /home/usuario/backup.sh >> /home/usuario/backup.log 2>&1
# Depois, leia o arquivo para conferir
$ tail -n 20 /home/usuario/backup.log
[2026-06-17 02:00] Backup concluido: 1 tabela, 3.2 MB
O que cada parte significa
- •
>>acrescenta no fim do arquivo (sem apagar o que ja tinha). - •
>(um so) sobrescreve o arquivo a cada execucao. - •
2>&1manda os erros para o mesmo lugar da saida normal.
💡 Dica: o cron pode te mandar email
Se um cron job imprime algo e voce nao redireciona a saida, o cron tenta mandar essa saida por email para o dono da tarefa (variavel MAILTO). Em servidores sem email configurado, isso so gera ruido. Por isso o costume e sempre redirecionar para um arquivo de log e ler de la.
Alternativa: systemd timers
O cron e otimo e simples, mas existe um irmao mais moderno: os systemd timers. No modulo 4.3 voce viu o systemd cuidando de servicos. Ele tambem sabe agendar tarefas. Um timer dispara um service na hora certa, parecido com o cron, mas com mais recursos.
Como se parece um timer
Sao dois arquivos: um .service (o que rodar) e um .timer (quando rodar).
# backup.timer
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
# Ativar e ver os timers ativos
$ systemctl enable --now backup.timer
$ systemctl list-timers
A linha Persistent=true faz a tarefa rodar assim que a maquina liga, caso ela estivesse desligada na hora marcada. O cron simples nao faz isso.
⏰ Prefira o cron quando
- ✓A tarefa e simples (um comando, um horario)
- ✓Voce quer escrever e esquecer rapido
- ✓O servidor fica ligado o tempo todo
⚙ Prefira systemd timer quando
- ✓Precisa rodar o que perdeu enquanto desligado
- ✓Quer logs integrados ao
journalctl - ✓Ja gerencia o resto com systemd
🧠 Analogia: dois despertadores
O cron e o despertador analogico de cabeceira: confiavel, direto, voce gira o ponteiro e pronto. O systemd timer e o despertador do celular com app: alarme inteligente, repete o que perdeu, anota um historico de quando tocou. Os dois acordam voce. Comece com o cron; quando precisar dos recursos extras, migre para o timer.
📚 Resumo do Modulo
Proxima Trilha:
Trilha 5 - Assistentes IA: voce ja domina terminal, deploy, servidor e automacao. Agora e hora de colocar a IA para trabalhar com voce.