Tengo una configuración cron para ejecutar un script bash diariamente a las 10 p.m. Tengo otra configuración de cron para ejecutar mensualmente el 1 de cada mes. Ambos cron inician un script bash, y la única diferencia en el script bash es el argumento que pasan al programa java subyacente (emulando el lanzamiento de la línea de comandos del programa java).
El problema es que necesito desactivar de alguna manera el cron diario el 1 de mes para que ambos no intenten ejecutarse el mismo día. ¿Es esto posible hacer automáticamente?
Supongo que puedo crear otro script bash para editar el cron antes del primero y luego nuevamente para configurar las cosas, pero esto parece ... impuro.
shell-script
cron
SnakeDoc
fuente
fuente
Respuestas:
De manera similar a la solución propuesta por @StephaneChazelas en los comentarios, puede especificar el rango de días en el tercer campo como un rango para el cron que desea ejecutar todos los días, además del 1 de cada mes.
Las siguientes dos entradas lograrán lo que buscas:
fuente
La forma más fácil de lidiar con esto es tener una sola entrada cron. Modifique la secuencia de comandos bash para verificar la fecha: si es el primero del mes, llame al programa java con parámetros mensuales, de lo contrario, llame al programa con los parámetros diarios.
Cambiar el script simplifica el proceso ya que el script como documento describirá mejor lo que está sucediendo sin requerir información adicional en una tabla cron.
Los mods de script podrían verse así:
fuente
Creo que usando la comparación de enteros si es más correcto
fecha '+% d' devuelve 01 no 1, por lo que usar == comparación de cadenas será falso
en lugar
fuente