He escrito una entrada crontab como:
00 19 1-7 * 3 /sbin/init 0
Debería apagar mi servidor Linux el primer miércoles de cada mes. Desafortunadamente, el servidor se disparó hoy (jueves). ¿Alguien puede decirme por qué sucedió así y decirme cómo puedo solucionarlo?
Respuesta1
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.
Esto significa que tucrontabla entrada no funcionará como se esperaba. El comando se ejecutará todos los días del 1 al 7 de cada mes, además de todos los miércoles.
Debido a lo anterior,cronpor sí solo no podrá decidir si es el primer miércoles del mes o no. Sin embargo, puede verificar una condición usandocrony comprobar el otro conpruebayfecha:
00 19 1-7 * * [ $(/usr/bin/date +\%w) = 3 ] && /sbin/init 0
Cómo funciona:
El comando se ejecutará todos los días del 1 al 7 del mes.
$(/usr/bin/date +\%w)
devuelve el día de la semana.[ ... = 3 ] &&
comprueba si ese día laborable es miércoles (3).Si es así,
/sbin/init 0
se ejecuta.
Tenga en cuenta que debe omitir el signo de porcentaje, ya que es especial paracron.