GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo decirle a Cron que ejecute un comando cada dos días (par/impar)?

Al configurar cron para ejecutar un comando cada dos días usando el campo "Día del mes", así:

1 22 */2 * * COMMAND

se ejecuta cada vez que el día del mes es impar:1,3,5,7,9 y así sucesivamente.

¿Cómo puedo configurar cron para que se ejecute en días del mes que son incluso 2, 6, 8, 10, etc. (sin especificarlo literalmente, lo cual es problemático ya que cada mes tiene una cantidad diferente de días en el mes)?

Respuesta aceptada:

La sintaxis que probó es realmente ambigua. Dependiendo de cuántos días tenga el mes, algunos meses se ejecutará en días impares y otros en días pares. Esto se debe a que la forma en que se calcula toma el número total de posibilidades y las divide. Puede anular este comportamiento extraño especificando manualmente el intervalo de días y utilizando un número de días impar o par. Dado que los scripts de días pares nunca se ejecutarán el día 31 de los meses más largos, no perderá nada si usa 30 días como base para los días pares, y si especifica específicamente dividirlo como si hubiera 31 días, puede forzar días impares. -día de ejecución.

La sintaxis se vería así:

# Will only run on odd days:
0 0 1-31/2 * * command

# Will only run on even days:
0 0 2-30/2 * * command

Su preocupación sobre los meses que no tienen la misma cantidad de días no es importante aquí porque ningún mes tiene MÁS días que este, y para febrero pobre, el rango de fechas nunca coincidirá con el último día o dos, pero no hará daño tenerlo en la lista.

El único problema con este enfoque es que si se encuentra en un ciclo de días impares, después de meses con 31 días, su comando también se ejecutará el primer día del mes. Del mismo modo, si está forzando un ciclo par, cada año bisiesto generará un ciclo de tres días a fines de febrero. Realmente no puede evitar el hecho de que cualquier patrón regular de "cada dos días" no siempre va a caer en días pares o impares en cada mes y de cualquier manera que fuerce esto, tendrá una carrera adicional o perderá una carrera entre meses con recuentos de días no coincidentes.

Relacionado:Linux:¿acceso directo para minimizar todas las ventanas?
Linux
  1. ¿Cómo ejecutamos un comando almacenado en una variable?

  2. Cómo ejecutar Cron cada 5 minutos, segundos, horas, días, meses

  3. Cómo ejecutar un trabajo cron en días específicos de la semana

  4. ¿Cómo configurar un trabajo cron para ejecutar un ejecutable cada hora?

  5. Cómo ejecutar un trabajo cron cada hora y 10 minutos

Cómo ejecutar comandos de Linux en segundo plano

Cómo ejecutar trabajos cron cada 5, 10 o 15 minutos

Cómo ejecutar un comando de Linux cada X segundos para siempre

Cómo programar un trabajo en Cron para que se ejecute cada hora en Ubuntu 20.04

¿Cómo puedo hacer que un trabajo cron se ejecute cada 30 minutos?

Cómo configurar el trabajo cron para que se ejecute cada 2 días a las 11 p.m.