quinta-feira, 25 de julho de 2013

Agendamento de tarefas usando Cron

Um recurso muito usado na administração de servidores (mas que pode ser muito útil também no desktop) é o agendamento de tarefas. No Linux, o Cron é o programa que cuida dessa função, e é bem provável que venha instalado em todas as distribuições.

De uma forma bem fácil, se você quiser executar uma tarefa diariamente, basta criar um script e colocá-lo na pasta /etc/cron.daily. Se for semanalmente, coloque-o na pasta /etc/cron.weekly. Da mesma forma, se for uma tarefa mensal, coloque-a em /etc/cron.monthly. No exemplo abaixo mostro a tarefa diária que cuida do rotacionamento das logs do sistema.

$ cat /etc/cron.daily/logrotate
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
$

Por padrão, todos os usuários do sistema também podem agendar tarefas pelo Cron usando o comando "crontab -e". O programa Cron roda a cada minuto e verifica o crontab de todos os usuários e executa os comandos nos horários programados.

# crontab -e
10 1 * * 6     /usr/local/sbin/backup.sh Linux 2&>/dev/null
30 1 1 * *     /usr/local/sbin/audit.sh 2&>/dev/null
0 7 * * 1-5     /usr/local/sbin/sarg.sh 2&>/dev/null
0,30 * * * *     /usr/sbin/ntpdate a.ntp.br 2&>/dev/null
*/5 * * * * /usr/local/sbin/nconexao.sh 2&>/dev/null
23 19 * * 0 /etc/webmin/package-updates/update.pl

Aqui, cada linha é uma tarefa. A primeira coluna é o minuto; a segunda a hora; a terceira o dia; a quarta o mês; o quinto o dia da semana. Um "*" significa "qualquer valor". O restante é o programa a ser executado e seus parâmetros.

O backup.sh é executado no sábado a 01:10 da manhã. O dia da semana começa no domingo (0 ou 7). 6 é sábado.

Audit.sh roda todo dia 1º a 01:30 da manhã.

Sarg.sh roda as 07:00 da manhã, de segunda (1) até sexta (5). Não roda, portanto, nos finais de semana.

Ntpdate é executado a cada 30 minutos, ou seja, em todas as horas de todos os dias nos minutos 0 e 30.

Nconexao.sh é executado a cada 5 minutos (*/5)

Update.pl roda todo domingo as 19:23.

Com esse esquema versátil fica fácil agendar tarefas. Vale lembrar que o intervalo mínimo é de 1 minutos.