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.