Analizador de Expresiones Cron

Formato: minuto hora día-del-mes mes día-de-la-semana

Heredas un crontab y está lleno de 0 */2 * * 1-5, 15 4 1 * *, */30 8-18 * * *. Este analizador toma una expresión cron estándar de 5 campos y devuelve una descripción en inglés sencillo (“every 2 hours on weekdays”) más los próximos 5 momentos en que realmente se activará. Útil para entender horarios heredados y verificar uno nuevo antes de implementarlo.

Cómo analizar una expresión cron

  1. 1

    Pega la expresión

    Una expresión estándar de 5 campos (`* * * * *`): minuto, hora, día del mes, mes y día de la semana.

  2. 2

    Lee la descripción en inglés

    El analizador reformula cada campo en inglés sencillo, por ejemplo "At minute 0, every 2 hours, on day(s) of week 1-5."

  3. 3

    Comprueba la vista previa de la próxima ejecución

    5 próximos momentos de activación. Si no coinciden con tu intención, refina la expresión.

  4. 4

    Corrige los campos no válidos

    Las expresiones con un número de campos incorrecto o valores fuera de rango se rechazan con un error que indica el campo problemático.

Decodificación de cada campo

Cada campo tiene su propio rango válido y caracteres especiales:

Campo Rango Comodines admitidos
Minuto 0-59 * , - /
Hora 0-23 * , - /
Día del mes 1-31 * , - /
Mes 1-12 * , - /
Día de la semana 0-7 * , - /
  • * = cualquier valor (* en el campo de los minutos significa todos los minutos).
  • 1,5,10 = una lista de valores.
  • 1-5 = un rango de valores.
  • */15 o 0-45/15 = un paso, contado desde el inicio del rango del campo.
  • El día de la semana 0 y 7 son ambos domingo, así que se aceptan las dos convenciones. Los nombres de mes y de día de la semana como JAN o MON no se aceptan; usa números.

Ejemplos decodificados

Expresión En inglés
0 */2 * * 1-5 At minute 0 every 2 hours, Monday through Friday
15 4 1 * * At 04:15 on the 1st day of every month
*/30 8-18 * * * Every 30 minutes between 08:00 and 18:59
0 0 1,15 * * At midnight on the 1st and 15th of every month
0 22 * * 0 At 22:00 every Sunday

Qué acepta el analizador

  • Exactamente 5 campos: minuto, hora, día del mes, mes y día de la semana. Las expresiones Quartz de seis o siete campos (con segundos o con año) se rechazan.
  • Rangos válidos: cada valor debe caber en su campo, por ejemplo minuto 0-59, hora 0-23, día del mes 1-31, mes 1-12 y día de la semana 0-7.
  • Pasos positivos: el valor tras / debe ser un número positivo (*/0 se rechaza).
  • Sin atajos con nombre: @daily, @reboot y otros atajos no se aceptan. Expándelos a su forma de 5 campos antes (por ejemplo @daily = 0 0 * * *).

Día del mes y día de la semana combinados

Cuando se fijan tanto el día del mes como el día de la semana, este analizador solo programa una ejecución cuando ambos coinciden, así que 0 0 1 * MON se activa únicamente cuando el día 1 cae en lunes. La mayoría de implementaciones de cron en Linux tratan los dos campos como OR (la tarea se ejecuta cuando cualquiera de los dos coincide), así que verifica la expresión contra el programador que realmente uses.

Nota sobre la zona horaria

Los tiempos de la vista previa se calculan con el reloj del servidor, que funciona en UTC. Si tu crontab corre en una máquina con otra zona horaria, los tiempos mostrados aquí pueden diferir de los de esa máquina.

Preguntas frecuentes

No. Solo se aceptan expresiones estándar de 5 campos. Las expresiones Quartz con segundos (6 campos) o con año (7 campos) se rechazan con un error.

Normalmente por uno de estos motivos: la vista previa usa el reloj del servidor en UTC mientras tu crontab corre en otra zona horaria, tienes fijados día del mes y día de la semana a la vez (este analizador exige que ambos coincidan), o hay un paso que se reinicia al inicio de cada hora o día.

Sí, si es una expresión estándar de 5 campos, que es lo que usa Kubernetes (UTC por defecto). Ten en cuenta que la vista previa usa el reloj del servidor en UTC, así que si el clúster corre en otra zona horaria los tiempos pueden diferir.

El cron de Linux acepta atajos con nombre: @reboot (al iniciar), @yearly / @annually (0 0 1 1 *), @monthly, @weekly, @daily, @hourly. Este analizador no los acepta, así que expande el atajo a su expresión equivalente de 5 campos antes de pegarlo aquí.

Herramientas relacionadas