Rain WikiWindows · Linux · Android

cron e crontab

ServiçoA maioria das distribuições Linux

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

  1. Abra seu crontab: crontab -e
  2. Adicione uma linha, por exemplo: 30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  3. Salve e saia; o cron detecta a alteração automaticamente.
  4. Liste as tarefas: crontab -l

Cuidados

  • crontab -r exclui todo o crontab sem pedir confirmação.
  • Teste o comando manualmente com o mesmo usuário antes de agendá-lo.

Fontes

  1. crontab(5) man7.org
  2. crontab(5) (Debian) manpages.debian.org
  3. systemd.timer(5) man7.org

Última revisão: