FreeToGenerate.com

100% gratis · sin registro · todo en tu navegador

Escribe una expresión cron para ver qué significa y cuándo se ejecuta.

Todo ocurre en tu navegador. No se sube nada.

También disponible en: English · Português · Français · العربية

Analizador de expresiones cron: qué significa y cuándo se ejecuta

Pega tu expresión cron y descubre su significado, la próxima década de ejecuciones y si el cambio de hora se salta alguna — todo en tu navegador.

¿Qué es una expresión cron?

Una expresión cron es la línea de cinco campos que usan cron y casi todos los programadores de tareas para decir cuándo se ejecuta algo: minuto, hora, día del mes, mes y día de la semana, en ese orden y separados por espacios. La referencia es crontab(5), la página de manual del cron estándar, y es la que sigue este analizador de expresiones cron campo por campo.

Cada campo acepta su propio rango: el minuto va de 0 a 59, la hora de 0 a 23, el día del mes de 1 a 31, el mes de 1 a 12 (o su nombre de tres letras, jan a dec, sin distinguir mayúsculas) y el día de la semana de 0 a 7, donde tanto 0 como 7 significan domingo, o también acepta el nombre de tres letras (sun a sat). Los rangos son inclusivos (1-5 incluye el 1 y el 5), varios valores se separan por comas, y un paso se escribe con una barra después de un rango o de un asterisco: */15 en el campo de minutos es «cada 15 minutos», 1-5/2 es «lunes, miércoles y viernes».

También acepta los alias que documenta crontab(5) como atajos de una sola palabra en lugar de los cinco campos: @yearly y @annually equivalen a «0 0 1 1 *», @monthly a «0 0 1 * *», @weekly a «0 0 * * 0», @daily y @midnight a «0 0 * * *», y @hourly a «0 * * * *». @reboot existe en cron, pero no tiene horario propio, así que esta herramienta no lo acepta: no hay «próxima ejecución» que calcular para un alias que significa «al arrancar».

Cómo se usa

  1. Escribe o pega la expresión. Puedes escribir los cinco campos separados por espacios o un alias como @daily; el resumen y la tabla se actualizan al momento.
  2. Elige la zona horaria. Por defecto se usa la de tu propio navegador, pero puedes cambiarla para ver cómo se comporta la misma expresión en otro lugar del mundo.
  3. Revisa el resumen, la tabla y las próximas diez ejecuciones. Si el cambio de hora afecta a alguna, aparece marcada como saltada o como repetida, con la fecha y la hora exactas.

La sorpresa que casi nadie espera: el día se combina con O, no con Y

Este es el titular de la página, porque casi todo el mundo lo lee al revés. crontab(5) es explícito: «If both fields are restricted (i.e., do not contain the '*' character), the command will be run when EITHER field matches the current time.» Es decir: cuando el día del mes y el día de la semana están ambos restringidos (ninguno de los dos es un simple asterisco), la tarea se ejecuta cuando coincide cualquiera de los dos campos, no solo cuando coinciden los dos a la vez.

Eso significa que «0 0 13 * 5» no dice «todos los viernes 13», como parece a simple vista. Dice «el día 13 de cualquier mes, O cualquier viernes», que es un conjunto mucho más amplio. Contado para 2026: esa expresión se ejecuta 61 días, frente a los solo 3 viernes 13 que tiene ese año. La diferencia no es un matiz, es un orden de magnitud.

Si de verdad quieres solo el viernes 13, no hay forma de escribirlo en una expresión cron estándar: los cinco campos no tienen manera de exigir que ambas condiciones se cumplan a la vez cuando ambas están restringidas. La solución habitual es programar la tarea para que se ejecute todos los viernes (o todos los días 13) y que sea el propio programa, dentro del trabajo, quien compruebe la fecha completa y decida si de verdad es viernes 13 antes de hacer nada.

Esta herramienta no oculta esa regla ni la corrige por ti: te muestra el resumen en lenguaje natural exactamente como cron lo interpretaría, para que veas de un vistazo si tu expresión combina los dos campos de día con un O que no querías.

Cambio de hora, y una discrepancia real entre implementaciones

El cambio de hora no es un caso raro que esta herramienta improvisa: está previsto en la propia especificación. crontab(5) dice que «non-existent times, such as the 'missing hours' during the daylight savings time conversion, will never match, causing jobs scheduled during the 'missing times' not to be run», y que «times that occur more than once ... will cause matching jobs to be run twice». El analizador reproduce exactamente ese comportamiento en vez de fingir que el cambio de hora no existe.

Con datos medidos para Nueva York en 2026, donde el reloj se adelanta el 8 de marzo y se atrasa el 1 de noviembre: una tarea diaria a las 02:30 no se ejecuta el 8 de marzo, porque esa hora directamente no existe ese día. Una tarea diaria a la 01:30 se ejecuta dos veces el 1 de noviembre, con una hora de diferencia entre ambas, porque la 01:30 ocurre dos veces. Y hasta una tarea horaria se ve afectada sin que lo parezca: «0 * * * *» se ejecuta 23 veces el 8 de marzo, no 24 — la que falta es justo la de las 02:00.

Hay también un punto donde las implementaciones de cron discrepan de verdad, y esta herramienta sigue lo que hace el propio cron en su código fuente: la marca que decide si un campo de día «contiene un asterisco» se fija mirando el primer carácter del campo, antes de analizarlo entero. Eso significa que «*/9» cuenta como asterisco y por tanto NO está restringido, así que la regla del O de la sección anterior no se le aplica a ese campo.

Comprobado con una prueba diferencial de 5.076 expresiones generadas al azar contra una implementación de referencia muy usada: aparecieron 1.262 discrepancias, y las 1.262 tenían exactamente esta misma causa, sin ningún caso sin explicar. Es una diferencia real entre implementaciones, y esta herramienta la resuelve del lado del comportamiento del propio cron.

¿Por qué es gratis?

Porque no hace falta nada más que tu propio navegador. Analizar la expresión, calcular las próximas ejecuciones y comprobar el cambio de hora es aritmética de fechas, y JavaScript ya trae todo lo necesario para hacerla correctamente en cualquier zona horaria del mundo.

No hay cuenta que crear, no hay marca de agua, y tu expresión cron nunca sale de la pestaña donde la escribiste: no se sube a ningún servidor porque no hace falta subirla a ninguna parte.