sábado, 1 de agosto de 2009

Agendamento com CRONTAB

crontab é um programa do Unix que edita o arquivo onde são especificados os comandos a serem executados e a hora e dia de execução pelo cron, um programa que executa comandos agendados nos sistemas operacionais do tipo Unix (como o Linux ou o Minix, por exemplo).

O cron se encarregará de verificar a hora e determinar se existe ou não algum programa a ser rodado. Caso exista ele o rodará na hora e data solicitada.


Parâmetros
-l usuário -- lista as tarefas agendadas para o usuário
-e usuário -- edita o agendador
-d usuário -- apaga o arquivo do usuário
-c diretório -- especifica um diretório para o Crontab

Sintaxe:
Dentro do arquivo que se abre após o comando existe uma sintaxe conforme a seguir:

mm hh dd MM ss script

mm = minuto(0-59)
hh = hora(0-23)
dd = dia(1-31)
MM = mes(1-12)
ss = dia_da_semana(0-6): 0-dom 1-seg 2-ter 3-qua 4-qui 5-sex 6-sab
script = comando a ser executado.

Obs 1: Em dia_da_Semana, 0 refere-se a domingo; e 6, ao sábado.
No caso de dia da semana funciona também as três primeiras letras
(em inglês) do dia da semana (SUN,MON,TUE,WED,THU,FRI,SAT)
Obs 2: Em qualquer posição pode-se usar o * (asterisco) quando não se
importar com o campo em questão.
Obs 3: Pode-se utilizar intervalos nesses campos. O caracter para intervalo
é o - (hifen).
Obs 4: Pode-se utilizar lista de valores nesses campos. O caracter para a
lista é a , (vírgula).
Obs 5: Qualquer texto colocado após o programa que será executado será
considerado comentário e não será interpretado pelo cron

Seguem alguns exemplos:

Todo dia de hora em hora (hora cheia)
00 * * * * /bin/script
De cinco em cinco minutos todos os dias (note a divisão por 5 do intervalo 00-59)
00-59/5 * * * * /bin/script
Nas seguintes horas: 10, 12, 16, 18, 22 aos 15 minutos da hora
15 10,12,16,18,22 * * * /bin/script
Nos primeiros cinco dias do mês às 19:25
25 19 01-05 * * /bin/script
De segunda a sexta ao meio-dia e a meia-noite
00 00,12 * * 1-5 /bin/script
Script rodar Segunda,Quarta,Sexta às 2 horas
0 2 * * mon,wed,fri /bin/script
Script para rodar Terça,Quinta às 3 horas
0 3 * * tue,thu /bin/script



NA PRÁTICA
==========

Vamos implementar um agendamento do Squid+Sarg p q rode um relatorio de acessos a Internet através do Sarg

Irei criar um script executavel p gerar o relatorio

1-SCRIPT P GERAR O RELATORIO (referente ao dia anterios)
#!/bin/bash
ONTEM=$(date --date "1 day ago" +%d/%m/%Y)
/usr/sbin/sarg -f /etc/squid/sarg.conf -d $ONTEM-$ONTEM
exit 0


2-PERMISSÃO DE ARQUIVO EXECUTÁVEL
# chmod 755 /usr/local/bin/relat-diario


3-AGENDAMENTO PARA EXECUTAR O SCRIPT
Agendamento p q o relatorio rode todos os dias a 00h01min

#editar o arq
vim /etc/crontab

#acrescentar esta linha ao fim do arq
1 0 * * * root /usr/local/bin/relat-diario


4-EXECUÇÃO
Na prática o script rodaria um executavem desta forma, considerando q hj é dia 01/08/2009 às 00h01min

sarg -f /usr/local/bin/relat-diario -d 31/07/2009-31/07/2009


Nenhum comentário: