Desligando o servidor Linux na primeira quarta-feira de cada mês

1

Eu escrevi uma entrada crontab como:

00 19 1-7 * 3 /sbin/init 0

Ele deve desligar meu servidor linux na primeira quarta-feira de cada mês. Infelizmente o servidor disparou hoje (quinta-feira). Alguém pode me dizer por que isso aconteceu assim e por favor me diga como eu posso consertar isso?

    
por Reni 06.03.2014 / 16:41

1 resposta

6

De crontab (5) :

   Note: The day of a command's execution can be specified by two fields --
   day of month, and day of week.  If  both  fields  are  restricted  (ie,
   aren't  *),  the command will be run when either field matches the cur-
   rent time.

Isso significa que sua entrada crontab não funcionará como esperado. O comando será executado todos os dias de 1º a 7º todos os meses, além de toda quarta-feira.

Por causa do acima, o cron sozinho não poderá decidir se é a primeira quarta-feira do mês ou não. No entanto, você pode verificar uma condição usando cron e verificar a outra com teste e data :

00 19 1-7 * * [ $(/usr/bin/date +\%w) = 3 ] && /sbin/init 0

Como funciona:

  • O comando será executado todos os dias do 1º ao 7º dia do mês.

  • $(/usr/bin/date +\%w) retorna o dia da semana.

  • [ ... = 3 ] && verifica se esse dia da semana é quarta-feira (3).

  • Se for, /sbin/init 0 será executado.

Note que você tem que escapar do sinal de porcentagem, pois é especial para o cron .

    
por 06.03.2014 / 17:05

Tags