Consejos de Cron para no ejecutar trabajos cron en días festivos (el lunes de un fin de semana de tres días)

Consejos de Cron para no ejecutar trabajos cron en días festivos (el lunes de un fin de semana de tres días)

Tenemos alrededor de cien máquinas configuradas y cada máquina ejecuta tareas cron, como iniciar y detener servicios y archivar los archivos de registro de estos servicios al final del día en un repositorio centralizado.

Un dolor de cabeza que tenemos es el fin de semana de tres días (cerramos los días festivos). No queremos que los servicios se inicien en esos días y se conecten a las máquinas de nuestros socios comerciales.

Actualmente hacemos esto comentando manualmente los trabajos más críticos y permitiendo que ocurran un montón de errores durante todo el día. No es ideal.

Básicamente, si un trabajo tiene '1-5' configurado en el campo del día, queremos que esto signifique 'días laborables' y no de lunes a viernes. Tenemos una base de datos que realiza un seguimiento de qué días son realmente "días laborables".

Entonces, ¿es posible anular el algoritmo de coincidencia de días de Cron, o hay alguna otra forma de establecer fácilmente una configuración de cron para evitar que las cosas comiencen en un lunes festivo?

¡Gracias!

Respuesta1

Cron no apoya este tipo de determinación. Se vuelve muy complicado muy rápido. Aquí en Canadá, los días festivos ni siquiera son consistentes entre provincias.

Escribiría un script de ejecución que verifique una base de datos de días festivos y salga si son días festivos. Pruebe algo como:

#!/bin/bash

HOY=$(fecha +%Y%m%d)
si grep -q $HOY /etc/holidays; entonces
   echo Saltarse las vacaciones por $*
   salir 0
fi

$*

Respuesta2

Puedo imaginar algunas formas de hacer esto, pero la solución más práctica dependerá de la configuración exacta de todos los trabajos cron. Por ejemplo:

Si la base de datos del día laboral se puede interrogar a través de un script, podría ejecutar un trabajo cron el domingo que determine si el día siguiente (lunes) es un día laborable o no y establezca/borre un archivo en alguna parte. Todos los trabajos cron podrían buscar la presencia de este archivo y elegir ejecutarlo o salir en consecuencia.

O

Puede reemplazar todas las entradas cron individuales con un trabajo maestro que solo activa todos los demás si la base de datos (comprobable) dice que es un día laborable.

información relacionada