Ir al contenido
OpsKit

Analizador de expresiones cron

Pega una expresión cron y observa cuándo se ejecuta realmente. Cada campo se desglosa y las horas se muestran en la zona horaria que use tu planificador, que es de donde vienen casi todas las sorpresas con cron.

Programaciones habituales

Próximas ejecuciones

Desglose por campo

CampoValorCoincide con
Minuto00
Hora99
Día del mes*todos los valores
Mes*todos los valores
Día de la semana1-5lun, mar, mié, jue, vie

Todo ocurre en tu navegador. Esta página es un archivo estático. Lo que escribes se queda en la pestaña, nunca se envía a un servidor y desaparece al cerrarla, así que puedes pegar un token o una configuración real sin riesgo.

Cuándo la necesitas

  • Al escribir un CronJob de Kubernetes y necesitar confirmar que se dispara a las 9 de la mañana locales y no a las 9 UTC.
  • Al revisar un crontab heredado en el que nadie recuerda qué significa 30 2 * * 0.
  • Al comprobar que un proceso por lotes y la ventana de copias de seguridad no chocarán el mes que viene.

Ejemplos resueltos

Cada día laborable a las 09:00

Entrada
0 9 * * 1-5
Resultado
De lunes a viernes a las 09:00

El día de la semana va de 0 a 6 con el domingo como 0. Tanto 0 como 7 significan domingo.

Cada 15 minutos en horario de oficina

Entrada
*/15 9-18 * * 1-5
Resultado
09:00, 09:15 … 18:45, solo días laborables

El paso se aplica dentro del rango, así que se detiene tras las 18:45 en vez de correr toda la noche.

La que sorprende a todo el mundo

Entrada
0 0 1 * MON
Resultado
El día 1 de cada mes Y todos los lunes

Cuando ambos campos de día están restringidos, cron los combina con O en lugar de exigir los dos.

Dónde suele fallar la gente

Dar por hecho que el contenedor usa tu zona horaria

Un CronJob de Kubernetes sin campo timeZone usa la zona del controlador, que normalmente es UTC. Una programación a las 09:00 se ejecuta entonces a las 11:00 en Madrid.

Leer `*/5` en el campo de la hora como cada cinco horas

Un paso divide todo el rango desde 0, así que */5 en el campo de la hora significa 0, 5, 10, 15 y 20, no cada cinco horas a partir de ahora.

Mezclar día del mes y día de la semana

Restringir ambos hace que la programación se dispare más veces, no menos. Deja uno como * salvo que quieras de verdad la unión.

Preguntas frecuentes

¿Cuántos campos debe tener una expresión cron?

El cron estándar de Unix y los CronJob de Kubernetes usan 5: minuto, hora, día del mes, mes y día de la semana. AWS EventBridge añade un sexto campo de año y exige un ? en uno de los dos campos de día. Quartz pone los segundos primero, con 6 o 7.

¿Por qué mi CronJob de Kubernetes se ejecuta a la hora equivocada?

Salvo que definas spec.timeZone, la programación se interpreta en la zona horaria de kube-controller-manager, normalmente UTC. Defínela de forma explícita o escribe la programación en UTC y documéntalo.

¿Qué significa @daily?

Es la forma abreviada de 0 0 * * *, medianoche todos los días. Los demás atajos son @hourly, @weekly, @monthly y @yearly. @reboot es distinto: se ejecuta al arrancar y no tiene programación.

Herramientas relacionadas