2 de outubro de 2009

Cron

É uma agenda do nosso sistema onde você pode marcar seus compromissos administrativos. Como por exemplo uma rotina de backup. O Cron é responsável por avisar o shell a executar os comandos.

Cron --> Chefe
Crontab --> A agenda que o chefe usa
shell --> Funcionário que executa os compromissos

/etc/crontab (só root)
/var/spool/cron/crontabs (cada usuário acessa sua própria agenda)

Comando para agendar uma tarefa:
#crontab –e
-e: edit

Sintaxe do Cron:
mm hh DD MM DOW COMMAND

mm – minuto (0 até 59)
hh – hora (0 até 23)
DD – dia do mês (1 até 31)
MM – mês (1 até 12)
DOW – dia da semana (0 até 7)
COMMAND – tarefa que irá executar

0 = domingo
1 = segunda-feira
2 = terça-feira
3 = quarta-feira
4 = quinta-feira
5 = sexta-feira
6 = sábado
7 = domingo


O coringa "*"
Vamos executar uma tarefa (echo “Estou testando o cron : )” > /dev/tty1), enviando a saída desse comando para o terminal 1 em cada hora, ou seja, às 13:10, às 14:10, e assim por diante!
10 * * * * echo “Estou testando o cron : )” > /dev/tty1

O coringa "/"
Com esse coringa, podemos executar por exemplo uma tarefa de 5 em 5 minutos:
*/5 * * * * echo “Estou testando o cron : )” > /dev/tty1

O coringa "-"
Aqui, podemos executar uma tarefa dentro de um certo intervalo... por exemplo... de 0 à 5 minutos:
0-5 * * * * echo “Estou testando o cron : )” > /dev/tty1

O coringa "-" e o "/"
Aqui, juntamos 2 coringas para executar uma tarefa!
Por exemplo: executar uma tarefa de 5 em 5 minutos durante os 30 primeiros minutos:
0-30/5 * * * * echo “Estou testando o cron : )” > /dev/tty1

O coringa ","
Esse é um coringa onde podemos executar uma tarefa em tempos intercalados!
Por exemplo, no minuto 1, 3 e 5:
1,3,5 * * * * echo “Estou testando o cron :)” > /dev/tty1

Toda sexta, às 18, seja feito o backup do diretório /etc, usando o tar com o gzip!
00 18 * * 5 tar -cvzf bkp_etc.tgz /etc

Lembrando que ele sempre obedece uma condição. Exemplo: quero que seja mostrado na tela às 17 horas a seguinte mensagem: “hoje é Sex Jul 29 17:00:00 BRT 2005”; ou seja, mostre a saída do comando date; porém, o dia tem que ser sexta e tem que ser no mês 07, no dia 29 e tem que ser 17 horas!
Ficaria assim:
0 17 29 7 5 echo “Hoje é `date`”

O cron (chefe) vai consultar o que foi escrito no crontab (agenda do chefe) para ver se o que pedimos vai ser executado pelo funcionário (shell).
Para ver então essa agenda, usamos o comando:
# crontab –l
-l : list

Limpar os compromissos da agenda inteira:
# crontab –r
-r: remove

# crontab –l –u (apenas como root)
-l : list
-u: user

Nenhum comentário: