Formato y zona horaria del trabajo cron

Los trabajos cron se programan en intervalos recurrentes especificados con un formato basado en unix-cron. Puedes definir una programación para que tu trabajo se ejecute varias veces al día o en días y meses específicos. (Aunque ya no recomendamos su uso, la sintaxis cron de App Engine heredada aún es compatible con los trabajos existentes).

Formato del trabajo cron

Puedes usar la consola de Google Cloud, Google Cloud CLI o la API de REST de Cloud Scheduler para establecer tu programa.

Un programa se define mediante el formato de cadena unix-cron (* * * * *), que es un conjunto de cinco campos en una línea, que indica cuándo se debe ejecutar el trabajo.

Los campos de hora tienen el siguiente formato y los valores posibles, y deben seguir este pedido:

|------------------------------- Minute (0-59)
|     |------------------------- Hour (0-23)
|     |     |------------------- Day of the month (1-31)
|     |     |     |------------- Month (1-12; or JAN to DEC)
|     |     |     |     |------- Day of the week (0-6; or SUN to SAT; or 7 for Sunday)
|     |     |     |     |
|     |     |     |     |
*     *     *     *     *
Campo Formato de valores válidos
Minuta 0-59
Hora 0-23
día del mes 1-31
Mes 1-12 (o de ENE a DIC)
Día de la semana 0-6 (o DOM a SAT; o 7 para el domingo)
  • Minute: Indica cuánto tiempo después de la hora en punto se ejecuta la tarea, en minutos. Por ejemplo, si el minuto se establece en 0, el trabajo se ejecutará a la parte superior de la hora (porque es 0 minutos después de la hora) Por lo tanto, si la hora es a las 8:00 a.m., el trabajo se ejecutará a esa hora.

  • Hora: Indica cuánto tiempo después de la medianoche se ejecuta la tarea, en horas (redondeadas hacia abajo a la hora más cercana, ya que los minutos restantes se indican en el campo minute). La medianoche es 0 y el mediodía es 12. Por ejemplo, la hora se establece en 0, el trabajo se ejecuta a medianoche (porque esa hora es 0 horas después de la medianoche).

  • Día del mes:Indica la fecha calendario del mes. Por ejemplo, 1 para el primer día del mes. Cloud Scheduler no Admite L para que represente el último día del mes.

  • Mes: Indica el mes. Especifica el número de mes o las primeras tres letras del nombre del mes en mayúsculas. Por ejemplo, 1 para enero o lo que equivale a JAN.

  • Día de la semana: Indica el día de la semana. El lunes es el martes por la 1 es 2, y así sucesivamente. 0 o 7 pueden indicar el domingo. Especifica el día del la semana, ya sea por un número o por las primeras tres letras del nombre del día de la semana en mayúsculas (por ejemplo, SUN para domingo).

    • Este campo se evalúa como un OR inclusivo con el campo day of the month, a menos que uno de estos campos esté marcado como sin restricciones con el asterisco (*). Por ejemplo, si el día del mes se establece en 1 y el día de la semana en SAT, la tarea se ejecuta el primer día del mes y todos los sábados del mes, incluso si el primer día del mes no es un sábado. Si el día de la semana no tiene restricciones (configurado en *), la tarea se ejecuta solo el primer día del mes.

Coincide con todos los valores

Para hacer coincidir todos los valores de un campo, usa el asterisco: *. Cuando un campo se establece en el asterisco, el campo coincide con todos los valores válidos para ese campo siempre que se cumplan las demás condiciones del campo. A veces, configurar un campo con el asterisco se conoce como dejar el campo sin restricciones, ya que no se limita a un valor específico.

Estos son dos ejemplos en los que el campo de minutos se deja sin restricciones:

  • * 0 1 1 1: La tarea se ejecuta todos los minutos de la medianoche del 1 de enero y los lunes.
  • * * * * *: La tarea se ejecuta cada minuto (de cada hora, de cada día del mes, de cada mes, de cada día de la semana, porque cada uno de estos campos tampoco tiene restricciones).

El asterisco es equivalente a un caso especial de un rango, donde el el rango comienza con el primer valor válido del campo y termina en el último valor del campo (por ejemplo, 0-59 para el campo de minutos).

Coincidencia con un rango

Para que coincidan con un rango de valores, especifica los valores de inicio y finalización separados por una guion (-). No incluyas espacios en el rango. Los rangos son inclusivos. El primer número debe ser menor que el segundo. Si usas nombres abreviados para el mes o el día de la semana (por ejemplo, JAN en lugar de 1 para el primer mes del año), el primer valor debe aparecer antes en el mes o la semana que el segundo.

Los siguientes ejemplos equivalentes se ejecutan a la medianoche de los lunes, martes, miércoles, jueves y viernes (para todos los meses):

  • 0 0 * * 1-5
  • 0 0 * * MON-FRI

Cómo hacer coincidir una lista

Las listas pueden contener cualquier valor válido para el campo, incluidos los rangos. Especifica los valores separados por una coma (,). No incluyas espacios en la lista.

Ejemplos:

  • 0 0,12 * * *: El trabajo se ejecuta a la medianoche y al mediodía.
  • 0-5,30-35 * * * *: La tarea se ejecuta en cada uno de los primeros cinco minutos de cada media hora (a la hora en punto y a media hora).

Cómo omitir valores en un rango

Puedes omitir valores en un rango especificando la velocidad a la que a través del rango. A veces, esto se conoce como el uso de una función de paso (o valor del paso o expresión de frecuencia). Para ello, especifica el rango, seguido de la barra diagonal (/) y la velocidad a la que deseas omitir el rango.

Puedes usar el asterisco (*) para indicar el rango de todos los valores del campo. Cuando se usa el asterisco, el primer valor en el rango es 0 por el minuto, hora y día de la semana (domingo), y 1 para los campos día del mes y mes.

El valor del paso no puede ser mayor que el valor más alto posible para el campo. El paso predeterminado es 1, por lo que la función de paso /1 es lo mismo que no usar una función de paso en absoluto.

Ejemplos de intervalos que usan funciones de paso:

  • */2: Esta es una función de paso válida para cualquier campo. En el campo de minutos, coincide con 0, 2, 4, ... , 58. Para la hora, coincide con 0, 2, 4, ..., 22. Para el día del mes, coincide con 1, 3, 5, ... , 31 (para un mes con 31 días). Para el mes, coincide con 1, 3, 5, ... , 11. Para el día de la semana, coincide con 0, 2, 4 y 6.

  • 0-12/2: Esta es una función de paso válida para los campos de minutos y horas. Coincide con 0, 2, 4, …, 12.

Programas de ejemplo con funciones escalonadas:

  • */2 * * * *: La tarea se ejecuta cada dos minutos.

  • 0 0-12/2 * * *: La tarea se ejecuta cada dos horas, a la hora en punto. La primera ejecución es a medianoche. La última carrera es al mediodía.

Programas de muestra

En la siguiente tabla, se muestran algunos programas de trabajo cron de muestra y su descripción:

Programar Formato del trabajo cron Explicación
Cada minuto * * * * * Se ejecuta en el minuto. Por ejemplo, 9:00 a.m., 9:01 a.m., :02 a.m. y así sucesivamente.
Cada 1 hora 0 * * * * Se ejecuta a la hora en punto. Por ejemplo, 9:00 a.m., 10:00 a.m., 11:00 a.m., etc. .
Todos los días 0 0 * * * Se ejecuta a las 12:00 a.m. (00:00 en formato de 24 horas) todos los días.
Todos los días de la semana
(lun-vie)
Los siguientes son equivalentes:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Se ejecuta a las 12:00 a.m. (12:00 a.m. en formato de 24 horas) los lunes, martes, Miércoles, jueves y viernes
Todas las semanas Los siguientes son equivalentes:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
Se ejecuta los domingos a las 12:00 a.m. (00:00 en formato de 24 horas).
Todos los meses 0 0 1 * * Se ejecuta a las 12:00 a.m. (00:00 en formato de 24 horas) el primer día del mes.
Todos los trimestres Los siguientes valores son equivalentes:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Se ejecuta a las 12:00 a.m. (00:00 en formato de 24 horas) el primer día del trimestre, para un programa trimestral estándar: 1 de enero, 1 de abril, 1 de julio y 1 de octubre.
Todos los años Los siguientes son equivalentes:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Se ejecuta a las 12:00 a.m. (00:00 en formato de 24 horas) del primer día de la primer mes del año (1 de enero).

Zona horaria

Puedes seleccionar la zona horaria para evaluar el programa La consola de Google Cloud (en la página Crear un trabajo, selecciona una Zona horaria de la lista) o a través de gcloud --time-zone cuando crear el trabajo.

El valor de este campo debe ser la abreviatura de la zona horaria que se usa en la base de datos tz. La zona horaria predeterminada es UTC.

Para algunas zonas horarias, el horario de verano puede hacer que los trabajos se ejecuten o no de forma inesperada. Esto se debe a que Cloud Scheduler se ejecuta en un reloj real tiempo. En las instancias en las que una hora puede transcurrir dos veces (como en el caso de los relojes que se retroceden) y tu trabajo está programado para esa hora, el trabajo programado puede experimentar anomalías de ejecución.

Si el trabajo requiere una cadencia muy específica, te recomendamos que elijas una zona horaria que no use el horario de verano. Específicamente, Se recomienda usar UTC para que Cloud Scheduler evite el problema por completo.