Cron - Daemon de comandos
O cron
é um programa que roda em segundo plano - daemon - e executa comandos agendados conforme o arquivo /etc/crontab
ou em crontab de cada usuário. E para ajudar na edição dos arquivos o comando crontab
.
Arquivo de Configuração
Um exemplo do arquivo:
# /etc/crontab
#
# na linha abaixo informa o shell que executara os comandos, caso nao exista
# usa /bin/sh
SHELL=/bin/sh
#
# Esta linha informa o PATH de comandos, caso omitida o cron não usa path.
# e deve ser informado o comando completo
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#
# m h dom mon dow user command
0 4 * * * root /usr/bin/poff
01-59/20 0-3 * * * root /usr/bin/pon
Como a maioria dos arquivos de configuração, o caractere #
, no início da linha, indica um comentário e é completamente ignorado pelo programa. E se estiver achando a tabulação muito difícil de visualizar pode colocar suas próprias tabulações e espaços extras.
Além deste existe os arquivos cron.hourly
, cron.daily
, cron.weekly
e cron.monthly
que já estão configurados para executar, respectivamente, a cada hora, dia, semana e mês.
Na seqüência é colocado o minuto, a hora, o dia do mês, o mês, o dia da semana, o usuário e o comando. Nota: o usuário é omitido se você está editando o contrab de um determinado usuário.
Em cada campo existe uma configuração:
- Minuto: pode ter valores de
00
a59
; - Hora: definido conforme relógio de 24 horas;
- Dia do Mês: faixa de
01
a31
; - Mês: faixa de
01
a12
; - Dia da Semana: segue a faixa de
00
a07
. Tanto0
como7
indica domingo e6
sábado;
Também é possível colocar as três primeiras letras do dia da semana (em inglês): SUN
, MON
, TUE
, WED
, THU
, FRI
, SAT
.
Comando
Pode ser tanto o comando sem o path, cat
, quanto o comando com o path, /bin/cat
.
Observações:
- Em qualquer lugar pode-se usar um
*
quando não é relevante o uso no campo. Pense no asterisco como: “qualquer tempo”. - Intervalos de tempo pode ser colocados entre hífens, exemplo:
00-15
; - É possível usar listas usando uma
,
(vírgula), exemplo:sun,mon,tue
; - Também é permitido colocar saltos de tempo:
00-59/15
; no exemplo se colocado no campo de minutos significa: “qualquer tempo a cada 15 minutos”.
O Comando crontab
Este comando é usado para editar os arquivos particulares dos usuários:
Seus parâmetros:
-l
: lista as tarefas agendadas para o usuário;-e
: edita o agendador;-r
: apaga o arquivo do usuário;-u usuario
: informa o usuário ao qual deve ser aplicado os parâmetros acima (somente o usuárioroot
pode usar).
Exemplos Comentados
Nos primeiros cinco dias do mês às 19:25:
25 19 01-05 * * /bin/script
De segunda a sexta ao meio-dia e à meia-noite:
00 00,12 * * 2-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
Programar todos os dias às 21h:
0 21 * * * /usr/local/bin/command
A cada 15 minutos e entre as hora 00 e 03:
00-59/15 0-3 * * * /root/script.backup
Programar para executar segunda, quarta e sexta (qualquer uma das linhas abaixo):
00 06 * * mon,wed,fri /root/script.backup
00 06 * * 1,3,5 /root/script.backup