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:
| Campo | Valor possível | Significado |
|---|---|---|
| MIN | 0–59 | Minuto |
| HORA | 0–23 | Hora |
| DIA_MÊS | 1–31 | Dia do mês |
| MÊS | 1–12 | Mês |
| DIA_SEMANA | 0–7 | Dia 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.
