Cron ou systemd timers? (na prática)
Tabela de Conteúdo
Se você mantém servidores Linux há algum tempo, cedo ou tarde vai cair nessa dúvida: continuo no cron ou migro para systemd timers?
A resposta curta: os dois funcionam. Mas o systemd te dá algumas vantagens bem úteis no dia a dia.
Quando o cron ainda faz sentido
- Tarefa simples (um comando pequeno, sem dependências)
- Compatibilidade: praticamente todo Linux tem cron
- Você só quer agendar e pronto
Exemplo clássico:
# todo dia às 03:00
0 3 * * * /usr/local/bin/backup.sh
O que o systemd timers resolve melhor
Persistência (e quando a máquina estava desligada)
Com cron, se o servidor estava off no horário, perdeu.
Com systemd timer, você pode usar Persistent=true e ele executa quando o host voltar.
Logs decentes (sem gambiarra)
Cron normalmente exige redirecionar saída para arquivo ou depender de e-mail.
No systemd, você tem tudo no journal:
sudo journalctl -u backup.service
Dependências e ordem
Se seu job depende de rede, mount, outro serviço… no systemd isso é “nativo”.
Exemplo completo (service + timer)
1) Service
Crie:
/etc/systemd/system/backup.service
Conteúdo:
[Unit]
Description=Backup diário
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
2) Timer
Crie:
/etc/systemd/system/backup.timer
Conteúdo:
[Unit]
Description=Agenda o backup diário
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
Ative:
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
sudo systemctl list-timers | grep backup
Dica rápida
Se você quer começar sem dor, faça assim:
- Começa mantendo o cron
- Migra os jobs que você mais precisa de rastreabilidade (logs) e persistência para systemd timers
Se quiser ver mais sobre systemd no geral, dá uma olhada neste post: systemd.
Simples assim! :)