Necesito encontrar una manera de cronometrar un trabajo para que se ejecute cada segundo miércoles del mes. es posible?
Necesito encontrar una manera de cronometrar un trabajo para que se ejecute cada segundo miércoles del mes. es posible?
Respuestas:
Mi página de manual para crontab (que lamentablemente no puedo encontrar en línea) da el siguiente ejemplo:
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
Adaptando esto a sus propósitos ...
0 4 8-14 * * test $(date +\%u) -eq 3 && job.sh
*), el comando se ejecutará cuando cualquiera coincida .
date +\%u
Puede evitar ejecutar un script externo utilizando una combinación del truco del día de la semana más el día de la semana:
# Run on every second Wednesday of the month
0 4 8-14 * Wed job.sh
Esto también evita ejecutar otro programa externo. El 8-14 selecciona todos los días que coinciden con la segunda semana del mes. Luego se filtra solo ese miércoles.
No es posible usar cron por sí solo, pero puede llamar a un script una vez por semana que haga la prueba:
En crontab, ejecute second_wed.sh a las 12.00 todos los miércoles:
0 12 * * 3 /home/you/bin/second_wed.sh
En second_wed.sh:
#!/usr/bin/env bash
day_of_month=`date +"%
if [ $day_of_month -gt 7 -a $day_of_month -lt 15 ]; then
# Call your program here instead of 'ls'…
ls
fi
Para los servidores CentOS 7, esta parece ser la sintaxis que funciona para mí. Tenga en cuenta los espacios alrededor de [y ]. Me tomó un tiempo entenderlo.
Esto ejecuta el test.sharchivo a las 13:07 / 1:07 PM del segundo miércoles del mes. (0 = domingo, 1 = lunes, 2 = martes, 3 = miércoles, etc.)
07 13 8-14 * * [ `date +\%u` = 3 ] && /root/scripts/test.sh
Dispare a las 10:15 AM el tercer viernes de cada mes: 0 15 10 ? * 6#3
Fuente: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm