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! :)