Agendando tarefas com cron: exemplos úteis
O cron é o agendador de tarefas clássico do Linux. Com ele, você automatiza backups, limpezas, relatórios e rotinas de aplicações.
Editando o crontab
crontab -e # tarefas do seu usuário
sudo crontab -e # tarefas do root
crontab -l # lista as tarefas
Entendendo a sintaxe
┌───────────── minuto (0-59)
│ ┌─────────── hora (0-23)
│ │ ┌───────── dia do mês (1-31)
│ │ │ ┌─────── mês (1-12)
│ │ │ │ ┌───── dia da semana (0-7, 0 e 7 = domingo)
│ │ │ │ │
* * * * * comando
Símbolos:
*— qualquer valor;,— lista (ex.:1,15);-— intervalo (ex.:1-5);/— passo (ex.:*/10= a cada 10).
Atalhos: @reboot, @hourly, @daily, @weekly, @monthly.
Exemplos práticos
Backup do banco todo dia às 3h
0 3 * * * /usr/local/bin/backup-banco.sh >> /var/log/backup.log 2>&1
Cron do WordPress a cada 5 minutos
Desative o WP-Cron em wp-config.php com define('DISABLE_WP_CRON', true); e use:
*/5 * * * * cd /var/www/site && php wp-cron.php > /dev/null 2>&1
Scheduler do Laravel
* * * * * cd /var/www/app && php artisan schedule:run >> /dev/null 2>&1
Limpar arquivos temporários com mais de 7 dias
0 4 * * * find /var/www/site/tmp -type f -mtime +7 -delete
Reiniciar um serviço toda segunda às 5h
0 5 * * 1 systemctl restart meuapp
Executar algo ao iniciar o servidor
@reboot /home/app/iniciar.sh
Boas práticas
- Use caminhos absolutos — o cron tem um
PATHreduzido. Em caso de dúvida, usewhich comando; - Redirecione a saída para logs (
>> arquivo.log 2>&1) para poder investigar falhas; - Evite sobreposição de execuções longas com
flock:
*/10 * * * * flock -n /tmp/sync.lock /usr/local/bin/sync.sh
- Defina variáveis no topo do crontab quando necessário:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
- Atenção ao fuso horário do servidor (
timedatectl).
Verificando se o cron executou
grep CRON /var/log/syslog # Debian/Ubuntu
sudo journalctl -u cron # Debian/Ubuntu com systemd
sudo journalctl -u crond # AlmaLinux/Rocky
Cron ou systemd timer?
O cron é simples e universal. Os timers do systemd oferecem logs integrados e execução de tarefas perdidas quando o servidor estava desligado. Ambos são ótimos — temos um post sobre systemd no blog.
Conclusão
Automatizar tarefas repetitivas economiza tempo e evita esquecimentos. Coloque suas rotinas para rodar em um VPS-NVME-BR da VittHost, disponível 24/7 com servidores no Brasil.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.