Cerrar el servidor Linux el primer miércoles de cada mes

Cerrar el servidor Linux el primer miércoles de cada mes

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 0se ejecuta.

Tenga en cuenta que debe omitir el signo de porcentaje, ya que es especial paracron.

información relacionada