01.09.2025

Temporizadores Systemd no Ubuntu: automação de tarefas sem cron

No Linux, tradicionalmente o cron é usado para automatizar tarefas. No entanto, com o surgimento do systemd, apareceu uma alternativa mais flexível e moderna — os systemd timers. Eles permitem executar tarefas em horários definidos, acompanhar seu status e integrá-las com os serviços do sistema.

Neste artigo, vamos entender como usar o systemd para automação e por que ele pode ser melhor que o cron.

Por que systemd em vez de cron?

1. Criando um serviço systemd

Primeiro é necessário descrever a tarefa como um serviço. Por exemplo, vamos criar uma tarefa que realiza backup em /opt/backup.sh:

sudo nano /etc/systemd/system/backup.service

Conteúdo:

[Unit]
Description=Backup de dados

[Service]
Type=oneshot
ExecStart=/opt/backup.sh

Importante: Type=oneshot é usado para tarefas únicas.

2. Criando um timer

Agora criamos um timer que irá executar nosso serviço.

sudo nano /etc/systemd/system/backup.timer

Conteúdo:

[Unit]
Description=Timer de backup

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Explicação dos parâmetros:
OnCalendar=daily – executa todos os dias (também existem hourly, weekly, monthly ou datas específicas).
Persistent=true – se o servidor estava desligado, a tarefa será executada na próxima inicialização.

3. Ativando o timer

Ativamos o timer e verificamos seu status:

sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers

A saída mostrará a programação de todos os timers ativos.

4. Exemplos de uso

Executar a cada 15 minutos:

[Timer]
OnCalendar=*:0/15

Executar 5 minutos após a inicialização do sistema:

[Timer]
OnBootSec=5min

Executar quando o sistema estiver ocioso:

[Timer]
OnIdleSec=30min

5. Logs e depuração

Todos os logs dos serviços iniciados via systemd estão disponíveis em:

journalctl -u backup.service

Isso é mais prático do que os logs padrão do cron.

Conclusão

O uso de timers do systemd oferece muito mais possibilidades ao administrador do que o cron clássico. Em vez de apenas executar scripts em horários fixos, você obtém:

Para administradores de sistemas, isso significa menos trabalho manual, e para projetos — execução mais previsível e segura de tarefas críticas, como backups, rotação de logs, atualizações e monitoramento.
Se você ainda usa cron por hábito, experimente mover pelo menos parte das suas tarefas para timers do systemd. É bem provável que o cron logo deixe de ser necessário em sua infraestrutura.

FAQ