cron e crontab
cron é o daemon clássico do Unix que executa comandos em um agendamento. Cada usuário possui um crontab, editado com crontab -e, no qual cada linha possui cinco campos de tempo (minuto, hora, dia do mês, mês, dia da semana) seguidos pelo comando. As tarefas do sistema ficam em /etc/crontab e /etc/cron.d/.
1Os campos de tempo
'30 2 * * *' significa 02:30 todos os dias; '*/10 * * * *' a cada dez minutos; '0 9 * * 1' 09:00 toda segunda-feira. O dia da semana 0 e 7 são domingo.
2Arquivos de sistema
Arquivos em /etc/cron.d/ e /etc/crontab possuem um campo extra, o nome do usuário, entre o tempo e o comando. Diretórios como /etc/cron.daily contêm scripts executados uma vez por dia.
3Armadilhas comuns
O cron é executado com um ambiente mínimo: use caminhos completos ou defina o PATH no crontab. A saída é enviada por e-mail ao proprietário ou perdida; redirecione-a para um arquivo de log. O caractere % tem um significado especial nas linhas do crontab e deve ser escapado como \%.
4timers do systemd
Em distribuições com systemd, as unidades .timer são uma alternativa com registro no journal, atrasos aleatórios e recuperação de execuções perdidas (Persistent=true).
Como adicionar uma tarefa diária
- Abra seu crontab:
crontab -e - Adicione uma linha, por exemplo: 30 2 * * *
/usr/local/bin/backup.sh>>/var/log/backup.log2>&1 - Salve e saia; o cron detecta a alteração automaticamente.
- Liste as tarefas:
crontab -l
Cuidados
crontab -rexclui todo o crontab sem pedir confirmação.- Teste o comando manualmente com o mesmo usuário antes de agendá-lo.
Artigos relacionados
- Unidades do systemd e systemctlO que é uma unidade do systemd, os tipos de unidade comuns e como iniciar, parar, habilitar e inspecionar serviços com o systemctl.
- logrotateO que o logrotate faz, como sua configuração em /etc/logrotate.conf e /etc/logrotate.d funciona e como testar uma regra com segurança.
- journalctl e o journal do systemdComo ler logs com journalctl, verificar quanto espaço o journal utiliza e reduzi-lo com segurança usando as opções --vacuum.
Fontes
- crontab(5) man7.org
- crontab(5) (Debian) manpages.debian.org
- systemd.timer(5) man7.org
Última revisão: