Saltar al contenido

¿Ejecutar un trabajo cron el primer lunes de cada mes?

Abel, miembro de nuestro staff, nos hizo el favor de crear este artículo ya que controla a la perfección este tema.

Solución:

Puede poner la condición en el comando crontab real (forma genérica):

[ "$(date '+%u')" = "1" ] && echo "It's Monday"

si su configuración regional es EN/US, también puede comparar cadenas (respuesta inicial):

[ "$(date '+%a')" = "Mon" ] && echo "It's Monday"

Ahora, si esta condición es true en uno de los primeros siete días de un mes, tienes su primer lunes. Tenga en cuenta que en el crontab, la sintaxis porcentual debe escaparse (forma genérica):

0   12  1-7 *   *   [ "$(date '+%u')" = "1" ] && echo "It's Monday"

si su configuración regional es EN/US, también puede comparar cadenas (respuesta inicial):

0   12  1-7 *   *   [ "$(date '+%a')" = "Mon" ] && echo "It's Monday"

Reemplace la echo comando con el comando real que desea ejecutar. También encontré un enfoque similar.

Tengo una computadora con configuración regional en español, por lo que este enfoque no funciona para mí porque Lun cambios a lunes

Otros idiomas también fallarían, así que hice una ligera variación en la respuesta aceptada que elimina la barrera del idioma:

 0 9 1-7 * *   [ "$(date '+%u')" = "1" ] && echo "¡Es lunes!"

Me resulta más fácil cuando no hay necesidad de manejar números de días.

Ejecutar el primer lunes del mes:

0 2 * * 1 [ `date '+%m'` == `date '+%m' -d "1 week ago"` ] || /path/to/command

es decir, si el mes de hace 1 semana no es el mismo que el mes actual, estamos en el primer día 1 (= lunes) del mes.

Del mismo modo, para el Tercer Viernes

0 2 * * 6 [ `date '+%m'` == `date '+%m' -d "3 weeks ago"` ] || /path/to/command

es decir, si el mes de hace 3 semanas es diferente al mes actual, estamos en el tercer día 6 (= viernes) del mes

Reseñas y puntuaciones del tutorial

Te invitamos a añadir valor a nuestro contenido informacional contribuyendo tu experiencia en las aclaraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *