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

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

Eu escrevi uma entrada crontab como:

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

Deve desligar meu servidor Linux na primeira quarta-feira de cada mês. Infelizmente o servidor travou hoje (quinta-feira). Alguém pode me dizer por que aconteceu assim e como posso consertar isso.

Responder1

Decrontab(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 seucrontaba entrada não funcionará conforme o esperado. O comando será executado todos os dias de 1º a 7º de cada mês, além de todas as quartas-feiras.

Por causa do acima,cronsozinho não conseguirá decidir se é a primeira quarta-feira do mês ou não. No entanto, você pode verificar uma condição usandocrone verifique o outro comtesteedata:

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 aquele dia da semana é quarta-feira (3).

  • Se for, /sbin/init 0é executado.

Observe que você precisa escapar do sinal de porcentagem, pois é especialcron.

informação relacionada