Agendamento de Tarefas no Linux com cron

No dia a dia da administração de sistemas Linux, há diversas tarefas que precisam ser executadas automaticamente em horários específicos: backups, limpezas de logs, atualizações de sistemas, envio de relatórios, entre outros. Para essas rotinas, o cron é uma ferramenta poderosa e essencial.


O que é o cron?

O cron é um daemon (serviço) do Linux que executa comandos ou scripts em horários e datas pré-definidos. A configuração das tarefas fica armazenada em tabelas chamadas crontabs (abreviação de cron tables).

Quando o sistema está rodando, o cron fica monitorando essas tabelas e executa os comandos agendados nos horários especificados.


Formato da crontab

A sintaxe básica de cada linha na crontab é:

MIN HORA DIA_MÊS MÊS DIA_SEMANA COMANDO

Campos:

CampoValor possívelSignificado
MIN0–59Minuto
HORA0–23Hora
DIA_MÊS1–31Dia do mês
MÊS1–12Mês
DIA_SEMANA0–7Dia da semana (0 e 7 = domingo)

Exemplo:

30 2 * * 1 /home/usuario/scripts/backup.sh

Esse exemplo executa o script backup.sh toda segunda-feira (1) às 2:30 da manhã.


Editando a crontab

Para editar a crontab do usuário atual:

crontab -e

Outros comandos úteis:

  • Ver crontab atual:
crontab -l
  • Remover crontab:
crontab -r
  • Editar crontab de outro usuário (como root):
crontab -u nome_usuario -e

Símbolos especiais

O cron permite o uso de alguns caracteres especiais para facilitar:

  • * → qualquer valor
  • , → lista de valores (ex.: 1,3,5)
  • - → intervalo (ex.: 1-5)
  • / → passo (ex.: */15 → a cada 15 minutos)

Exemplos:

  • A cada 15 minutos:
*/15 * * * * comando
  • Todo dia às 23:00:
0 23 * * * comando

Diretórios de sistema: /etc/crontab e /etc/cron.d/

Além do crontab de usuário, o Linux possui:

  • /etc/crontab
    Permite definir tarefas com o campo adicional de usuário:
MIN HORA DIA_MÊS MÊS DIA_SEMANA USUÁRIO COMANDO

Exemplo:

0 5 * * * root /usr/bin/apt update
  • /etc/cron.d/
    Arquivos com o mesmo formato do /etc/crontab. Permite criar arquivos separados por aplicação ou serviço.

Logs e Debug

Por padrão, a saída dos comandos cron vai para o email do usuário (se configurado). Para depuração:

  • Adicione redirecionamento de saída:
30 2 * * * /home/usuario/backup.sh >> /var/log/backup.log 2>&1
  • Ver logs do cron:

Em muitas distribuições:

grep CRON /var/log/syslog

Ou em:

/var/log/cron

Crontab e o Ambiente

O cron roda com um ambiente mínimo. Algumas variáveis como PATH podem não estar configuradas como no seu terminal interativo. Sempre use caminhos absolutos para comandos e scripts.

Exemplo:

/usr/bin/python3 /home/usuario/scripts/script.py

Se necessário, defina variáveis no início da crontab:

PATH=/usr/bin:/bin:/usr/sbin:/sbin

Dicas rápidas

  • Teste manualmente seus scripts antes de agendar.
  • Sempre use caminhos absolutos.
  • Redirecione a saída para arquivos de log.
  • Verifique permissões de execução nos scripts.

Conclusão

O cron é uma ferramenta indispensável para automatização no Linux. Com alguns comandos simples, você pode garantir que tarefas importantes sejam executadas de forma segura e programada, liberando tempo e evitando esquecimentos.

Dominar o cron é também um conhecimento essencial para quem está se preparando para certificação LPI.