2012-01-06 43 views
40

¿Es posible ejecutar un cronjob cada 15 minutos (más de cada hora, etc.) excepto a las 3 AM?Crontab se ejecuta cada 15 minutos, excepto a las 3 AM?

tengo otra tarea programada especial quiero correr a las 3AM, pero no quiero el otro para ejecutar al mismo tiempo ...

+7

Lo más fácil sería dejar que el crontab ejecute un script que compruebe si son las 3AM, y si es así, simplemente sale. – Konerak

+0

Idealmente, debería usar algún tipo de sistema de bloqueo. Establezca un indicador compartido con un trabajo y compruebe si ese indicador está configurado con el segundo trabajo. – Mikhail

Respuesta

86

Con una línea de cron, no. Con tres, sí:

# Every 15 minutes except for 3:00-3:59 
*/15 0-2,4-23 * * * thejob 
# 3:15, 3:30, 3:45 
15-45/15 3 * * * thejob 
# 3:00 dead 
0 3 * * * otherjob 
+1

Esto es lo que estaba pensando, gracias. Usaré esto. –

+0

Hasta la fecha, este es el ejemplo más claro que he encontrado hasta ahora. Si bien sería posible en dos líneas después de modificar la respuesta de Richrosa, esta es mucho más fácil de leer. ¡Gracias por compartir! +1 – bwright

1
0,15,30,45 0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * your cron job 
+12

Eso no se ejecutará a las 3:15 a.m., 3:30 a.m., 3:45 a.m., por lo que necesita otra línea en el crontab para estas horas. –

4

¡Hice mi propia solución, pero quería ver lo que otras personas pensaban!

Pongo esto en la parte superior de mi script deseado. Quería que no funcionara a la media hora tampoco, así que no funciona en ambos.

En la parte superior de la secuencia de comandos:

if [ $(date +%M) = 00 ] || [ $(date +%M) = 30 ] 
then 
exit 
fi 

La línea de cron:

*/15 * * * * ~/path/to/file 

Esperanza alguien usa mi solución también.

Cuestiones relacionadas