Inicie el trabajo cron desde las 06:05 hasta las 22:05 cada 15 minutos

Inicie el trabajo cron desde las 06:05 hasta las 22:05 cada 15 minutos

Necesito ejecutar un trabajo cron cada 15 minutos desde las 06:05 hasta las 22:05.

0 5/15 6-22 * * *

La siguiente sintaxis incluye 22:35 y 22:50.

¿Alguna idea de cómo lograr esto? ¿Es esto posible con una línea o necesito configurar varias?

Respuesta1

Es posible con una cronline pero solo con trucos.

SHELL=/bin/bash
5-50/15 6-22 * * * [[ '2220 2235 2250' =~ "$(date +\%H\%M)" ]] || /path/to/script

O con sh(y bash)

SHELL=/bin/sh
5-50/15 6-22 * * * case "$(date +\%H\%M)" in 2220|2235|2250) ;; *) /path/to/script;;esac

Tenga en cuenta que la barra invertida se escapa para los caracteres de porcentaje (%), necesarios para los crontabs.

Respuesta2

“Cron Job" de xmodulo tiene licencia CC BY 2.0

*/15 6-22 * * * /path/to/script

O

5,20,35,50 6-22 * * *  /path/to/script

Un campo puede ser un asterisco (*), que siempre significa "primero-último". Se permiten rangos de números. Los rangos son dos números separados por un guión. El rango especificado es inclusivo. Por ejemplo, 8-11 para una entrada de "horas" especifica la ejecución en las horas 8, 9, 10 y 11.

Se permiten listas. Una lista es un conjunto de números (o rangos) separados por comas. Ejemplos: "1,2,5,9", "0-4,8-12".

Los valores de paso se pueden utilizar junto con rangos. Seguir un rango con "" especifica saltos del valor del número a través del rango. Por ejemplo, se puede utilizar "0-23/2" en el campo de horas para especificar la ejecución del comando cada dos horas (la alternativa en el estándar V7 es "0,2,4,6,8,10,12,14,16 ,18,20,22"). También se permiten pasos después de un asterisco, por lo que si desea decir "cada dos horas", simplemente use "*/2".

También se pueden utilizar nombres para los campos "mes" y "día de la semana". Utilice las primeras tres letras del día o mes en particular (el caso no importa). No se permiten rangos o listas de nombres.

El "sexto" campo (el resto de la línea) especifica el comando que se ejecutará. La parte completa del comando de la línea, hasta una nueva línea o un carácter %, será ejecutada por /bin/sh o por el shell especificado en la variable SHELL del archivo cron. Los signos de porcentaje (%) en el comando, a menos que se use como escape una barra invertida (), se cambiarán a caracteres de nueva línea y todos los datos después del primer % se enviarán al comando como entrada estándar.

Nota: El día de ejecución de un comando se puede especificar mediante dos campos: día del mes y día de la semana. Si ambos campos están restringidos (es decir, no son *), el comando se ejecutará cuando cualquiera de los campos coincida con la hora actual. Por ejemplo, "30 4 1,15 * 5" haría que un comando se ejecutara a las 4:30 am los días 1 y 15 de cada mes, además de todos los viernes.

Respuesta3

Yo personalmente lo dividiría en dos líneas:

5-50/15 6-21 * * * /path/to/script
5       22   * * * /path/to/script

Primera línea para cubrir 0605-2150, segunda - para recorrido adicional en 2205.

Si realmente desea una línea, optaría por una verificación inexacta para tener en cuenta una posible hora de inicio del trabajo inexacta:

5-50/15 6-22 * * * [[ $(date +"\%-H\%M") -le 2210 ]] && /path/to/script

Respuesta4

Un poco tarde, pero para que esté completo, puede obtener una lista de tiempos de ejecución futuros para cualquier expresión cron en CronBuddy.com, una manera fácil de comprobar lo que sucederá.

información relacionada