Tutoriais

Agendando tarefas com cron: exemplos úteis

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

  1. Use caminhos absolutos — o cron tem um PATH reduzido. Em caso de dúvida, use which comando;
  2. Redirecione a saída para logs (>> arquivo.log 2>&1) para poder investigar falhas;
  3. Evite sobreposição de execuções longas com flock:
*/10 * * * * flock -n /tmp/sync.lock /usr/local/bin/sync.sh
  1. Defina variáveis no topo do crontab quando necessário:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
  1. 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.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS