Agendamento com Crontab

De UniWiki
Ir para: navegação, pesquisa

No GNU/Linux estes recursos são implementados pelo cron, que pode ser utilizado tanto pelo administrador como pelos outros usuários do sistema.

  • crontab -e Edita o crontab ou cria um caso ainda não exista;
  • crontab -l Mostra o conteúdo do crontab;
  • crontab -r Remove o crontab;
  • crontab -v Mostra quando foi a última vez que o crontab foi editado (disponível em apenas alguns sistemas).

O cron é estruturado da seguinte forma: 

ARQUIVO CRONTAB

O crontab controla as tarefas agendadas por cada usuário. Existe um arquivo para o sistema (/etc/crontab) e um para cada usuário, localizado em /var/spool/cron/<usuário>. Para listar o conteúdo de cada arquivo, digite: 

 crontab -l 

Este comando exibirá o arquivo do usuário que o digitou. Para editar o arquivo, digite: 

 crontab -e 

O crontab respeita esta sintaxe.

- - - - -
| | | | |
| | | | +-----   dia da semana (0 - 6) (domingo=0)
| | | +-------   mês (1 - 12)
| | +---------  dia do mês (1 - 31)
| +-----------  hora (0 - 23)
+------------- minuto (0 - 59)  

O usuário root pode acessar o crontab de outros usuários, basta informar o nome do usuário após as opções -r, -l ou -e. 

AGENDANDO TAREFAS

00 3,5,4 * * * root /usr/local/sbin/backup.sh - Diariamente, às 03:00h, 05:00h e 07:00h será executado, pelo usuário root, o script backup.sh;
40 16 1 6-8 * /home/oracle/sqldump.sh - Às 16:40 dos dias 01 de junho, julho e agosto, será executado o script sqldump.sh. 

A especificação do usuário para executar o script é opcional. 

  • */5 * * * * php /var/www/cacti/poller.php > /dev/null 2>&1 - Executa, a cada 5 minutos, o arquivo poller.php com usuário php.

Existem ainda 4 diretórios que facilitam o agendamento de tarefas: 

Diretório - Período:

  • /etc/cron.hourly - De hora em hora;
  • /etc/cron.daily - Diariamente;
  • /etc/cron.weekly - Semanalmente;
  • /etc/cron.monthly - Mensalmente.