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?