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 heredada de App Engine 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 configurar tu programa.

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

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

|------------------------------- 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 enero a diciembre)
Día de la semana De 0 a 6 (o del domingo al SÁB; o de 7 para el domingo)
  • Minute: indica en minutos cuánto después de la parte superior de la hora se ejecuta el trabajo. Por ejemplo, si el minuto se establece en 0, el trabajo se ejecutará en el momento más alto de la hora (porque son 0 minutos después de esa hora). Entonces, si la hora son las 8:00 a.m., el trabajo se ejecutará a las 8:00 a.m.

  • Hora: Indica qué tan lejos se ejecuta el trabajo después de la medianoche (se redondea 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, si la hora se configura como 0, el trabajo se ejecutará a la medianoche (porque son 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 el último día del mes.

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

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

    • Este campo se evalúa como un OR inclusivo con el campo day of the month, a menos que el asterisco (*) marque uno de ellos como no restringido. Por ejemplo, si el día del mes se establece en 1 y el día de la semana se establece en SAT, el trabajo se ejecuta el primer día del mes y cada sábado del mes, incluso si el primer día del mes no es sábado. Si el día de la semana no está restringido (configurado como *), el trabajo se ejecuta solo el primer día del mes.

Coincidencia con todos los valores

Para hacer coincidir todos los valores de un campo, usa el asterisco: *. Cuando se configura un campo con el asterisco, el campo coincide con todos los valores válidos para ese campo siempre que se cumplan las otras condiciones del campo. A veces, configurar un campo con el asterisco se denomina dejar el campo sin restricciones, ya que no está restringido a un valor específico.

Estos son dos ejemplos en los que el campo de minutos no tiene restricciones:

  • * 0 1 1 1: El trabajo se ejecuta cada minuto de medianoche el 1 de enero y los lunes.
  • * * * * *: El trabajo se ejecuta cada minuto (de cada hora, de todos los días del mes, de todos los meses, de todos los días de la semana, porque todos estos campos también no tienen restricciones).

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

Haz coincidir un rango

Para que coincidan con un rango de valores, especifica los valores de inicio y finalización, separados por un 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 durante el primer mes del año), el primer valor debe aparecer antes del mes o la semana que el segundo valor.

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

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

Coincidencias con 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 * * * *: El trabajo se ejecuta en los primeros cinco minutos de cada media hora (en el momento más alto de la hora y en la mitad y después de la hora).

Cómo omitir valores en un rango

Puedes omitir valores en un rango si especificas la velocidad a la que deseas recorrer el rango. En ocasiones, esto se denomina uso de una función de paso (o valor o expresión de tasa del paso). Para hacerlo, especifica el rango, seguido de la barra diagonal (/) y la velocidad con la que deseas omitir el rango.

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

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

Rangos de ejemplo que usan funciones de pasos:

  • */2: Esta es una función paso válida para cualquier campo. Para 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, 6.

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

Ejemplos de programas con funciones de pasos:

  • */2 * * * *: El trabajo se ejecuta cada dos minutos.

  • 0 0-12/2 * * *: El trabajo se ejecuta cada dos horas, a la hora. La primera ejecución es a la 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:

Programa Formato del trabajo cron Explicación
Cada minuto * * * * * Se ejecuta a cada minuto. Por ejemplo, 9:00 a.m., 9:01 a.m., :02 a.m., etcétera.
Cada 1 hora 0 * * * * Se ejecuta a cada hora. Por ejemplo, 9:00 a.m., 10:00 a.m., 11:00 a.m., etcétera.
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
(de lunes a viernes)
Los siguientes son equivalentes:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Se ejecuta a las 12:00 a.m. (00:00 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 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) el primer día del primer mes del año (1 de enero).

Zona horaria

Puedes seleccionar la zona horaria para evaluar la programación en la consola de Google Cloud (en la página Crear un trabajo, selecciona una Zona horaria de la lista) o mediante la marca gcloud --time-zone cuando creas el trabajo. La zona horaria predeterminada es Etc/UTC.

En 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 horas reales. En los casos en los que una hora puede ocurrir dos veces (como en el caso de los relojes hacia atrás) y tu trabajo está programado en ese momento, el trabajo programado podría observar anomalías en la ejecución.

Si tu trabajo requiere una cadencia muy específica, te recomendamos que consideres elegir una zona horaria que no cumpla con el horario de verano. Específicamente, se recomienda usar UTC para Cloud Scheduler a fin de evitar por completo el problema.