Las tareas cron se programan a intervalos recurrentes, que se especifican con un formato basado en cron para UNIX. Puedes definir una programación para que las tareas se ejecuten varias veces al día, o en días y meses concretos. Aunque ya no recomendamos su uso, se sigue admitiendo la programación de un trabajo mediante la creación de un archivo cron.yaml
para los trabajos que ya existan.
Cloud Scheduler también permite programar tareas con un formato más legible. Para obtener más información, consulta la sección Formato de trabajo alternativo de este documento.
Formato de tarea cron
Puedes usar la consola, Google Cloud CLI o la API REST de Cloud Scheduler para definir tu programación. Google Cloud
Una programación se define mediante 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 hora tienen el siguiente formato y los siguientes 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 los valores válidos |
---|---|
Minuto | 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 SÁB; o 7 para el domingo) |
Minuto: indica cuántos minutos han pasado desde el inicio de la hora en la que se ejecuta la tarea. Por ejemplo, si el minuto se define como
0
, el trabajo se ejecuta al principio de la hora (porque son 0 minutos después de la hora). Por lo tanto, si la hora es las 8:00, el trabajo se ejecutará a las 8:00.Hora: indica cuánto tiempo ha transcurrido desde la medianoche hasta que se ha ejecutado el trabajo (en horas, redondeado a la hora más cercana, ya que los minutos restantes se indican en el campo
minute
). La medianoche es0
y el mediodía es12
. Por ejemplo, si la hora se define como0
, el trabajo se ejecutará a medianoche (porque es 0 horas después de medianoche).Día del mes: indica la fecha del mes. Por ejemplo,
1
para el primer día del mes. Cloud Scheduler no admiteL
para indicar 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, lo que es lo mismo,JAN
.Día de la semana: indica el día de la semana. Por ejemplo, el lunes es
1
y el martes es2
. Se puede indicar el domingo con0
o7
. Especifica el día de la semana con un número o con las tres primeras 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 campoday 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 es1
y el día de la semana esSAT
, el trabajo se ejecuta el primer día del mes y todos los sábados del mes, aunque el primer día del mes no sea sábado. Si el día de la semana no tiene restricciones (es decir, se ha definido como*
), el trabajo se ejecutará solo el primer día del mes.
- Este campo se evalúa como un
Coincide con todos los valores
Para que coincidan todos los valores de un campo, utilice el asterisco: *
. Si se asigna un asterisco a un campo, este coincidirá con todos los valores válidos de ese campo siempre que se cumplan las condiciones de los demás campos. A veces, se dice que al asignar un asterisco a un campo, se deja sin restricciones, ya que no se limita a un valor específico.
A continuación, se muestran dos ejemplos en los que el campo de minutos no tiene restricciones:
* 0 1 1 1
: el trabajo se ejecuta cada minuto 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 y de cada día de la semana, ya que cada uno de estos campos tampoco tiene restricciones).
El asterisco equivale a un caso especial de intervalo, en el que el intervalo empieza en el primer valor válido del campo y termina en el último valor válido del campo (por ejemplo, 0-59
en el campo de minutos).
Coincidencia con un intervalo
Para que coincida con un intervalo de valores, especifica los valores inicial y final separados por un guion (-
). No incluyas espacios en el intervalo. Los intervalos son inclusivos. El primer número debe ser inferior al segundo. Si usa 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 ser anterior al segundo en el mes o la semana.
Los siguientes ejemplos equivalentes se ejecutan a medianoche los lunes, martes, miércoles, jueves y viernes (de todos los meses):
0 0 * * 1-5
0 0 * * MON-FRI
Coincidencia con una lista
Las listas pueden contener cualquier valor válido para el campo, incluidos intervalos.
Especifica los valores separados por comas (,
). No incluyas espacios en la lista.
Ejemplos:
0 0,12 * * *
: la tarea se ejecuta a medianoche y al mediodía.0-5,30-35 * * * *
: el trabajo se ejecuta en los primeros cinco minutos de cada media hora (al principio de la hora y a la media hora).
Omitir valores de un intervalo
Puedes omitir valores de un intervalo especificando una tasa para recorrer el intervalo. A veces, se denomina función de paso (o valor o expresión de tasa de paso). Para ello, especifica el intervalo, seguido de la barra diagonal (/
) y la velocidad a la que quieres desplazarte por el intervalo.
Puede usar el asterisco (*
) para indicar el intervalo de todos los valores del campo.
Cuando usas el asterisco, el primer valor del intervalo es 0 en los campos de minutos, horas y día de la semana (domingo), y 1 en los campos de día del mes y mes.
El valor del paso no puede ser superior al valor más alto posible del campo.
El paso predeterminado es 1, por lo que la función de paso /1
es la misma que si no se usara ninguna función de paso.
Ejemplos de intervalos que usan funciones escalonadas:
*/2
: esta es una función de paso válida para cualquier campo. En el campo de los minutos, coincide con 0, 2, 4, ... , 58. En el caso de la hora, coincide con 0, 2, 4, ... , 22. En el caso del día del mes, coincide con 1, 3, 5, ... , 31 (en un mes de 31 días). En el mes, coincide con 1, 3, 5, ... , 11. En el caso del 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.
Ejemplos de programaciones que usan funciones escalonadas:
*/2 * * * *
: el trabajo 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 a las 12:00.
Programaciones de ejemplo
En la siguiente tabla se muestran algunos ejemplos de programaciones de trabajos cron y sus descripciones:
Programar | Formato de tarea cron | Explicación |
---|---|---|
Cada minuto | * * * * * |
Se ejecuta cada minuto. Por ejemplo, las 9:00, las 9:01, las 9:02, etc. |
Todas las horas | 0 * * * * |
Se ejecuta cada hora. Por ejemplo, las 9:00, las 10:00, las 11:00, etc. |
Todos los días | 0 0 * * * |
Se ejecuta todos los días a las 00:00 (formato de 24 horas). |
Todos los días laborables (de lunes a viernes) |
Las siguientes expresiones son equivalentes:
|
Se ejecuta a las 00:00 (formato de 24 horas) los lunes, martes, miércoles, jueves y viernes. |
Todas las semanas | Las siguientes expresiones son equivalentes:
|
Se ejecuta los domingos a las 00:00 (en formato de 24 horas). |
Todos los meses | 0 0 1 * * |
Se ejecuta a las 00:00 (en formato de 24 horas) el primer día del mes. |
Cada trimestre | Las siguientes expresiones son equivalentes:
|
Se ejecuta a las 00:00 del primer día del trimestre, según una programación trimestral estándar: 1 de enero, 1 de abril, 1 de julio y 1 de octubre. |
Cada año | Las siguientes expresiones son equivalentes:
|
Se ejecuta a las 00:00 (en formato de 24 horas) del 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 (en la página Crear un trabajo, selecciona una zona horaria de la lista) o mediante la marca gcloud
--time-zone
al crear el trabajo.Google Cloud
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
.
En algunas zonas horarias, el cambio de horario puede provocar que las tareas se ejecuten o no se ejecuten de forma inesperada. Esto se debe a que Cloud Scheduler se ejecuta en la hora del reloj. En los casos en los que una hora puede ocurrir dos veces (por ejemplo, cuando los relojes se atrasan) y tu trabajo está programado para esa hora, es posible que se produzcan anomalías en la ejecución.
Si tu trabajo requiere una cadencia muy específica, te recomendamos que elijas una zona horaria que no tenga horario de verano. En concreto, se recomienda usar la hora UTC en Cloud Scheduler para evitar el problema por completo.
Formato de trabajo alternativo
Puedes usar un formato de especificación de tiempo más legible por humanos conocido como groc, que ofrece una alternativa a las expresiones cron.
Ten en cuenta que, al especificar una programación de tareas con groc, debes usar la CLI de gcloud o hacer una solicitud directa a la API Cloud Scheduler.
Por ejemplo, algunos eventos periódicos pueden ser difíciles de especificar con cron, como "el tercer martes de cada mes". En estos casos, puede usar construcciones como las de los siguientes ejemplos:
first sunday of month 12:00
2nd,3rd tue,wed,thu of feb,aug 13:50
every wed of december 00:00
1st friday of quarter 9:00
second,4th tue,thursday of 3rd month of quarter 18:30
1,3,4,7,11,18,29 of jan,jul 12:34
03 of month 12:34
every day 09:00
every sun,tue,thu 9:00
every 48 hours
every 5 minutes
every 60 minutes on mon,wed
every minute
Para obtener más información sobre la sintaxis, consulta Definir la programación de la tarea cron.