Explicador de Cron — lee la programación antes de desplegarla
Una expresión cron es densa por naturaleza: cinco o seis campos separados por espacios deciden cuándo se ejecuta una copia de seguridad, cuándo se envía un informe o cuándo entra en producción un job de reprocesamiento. Leer 0 0 1 * 1 de memoria y acertar es más difícil de lo que parece, y el coste del error solo aparece después, en producción. Esta herramienta traduce la expresión a lenguaje claro y proyecta las próximas ejecuciones reales, todo en tu navegador.
Cómo usarla
- Pega o escribe la expresión — la explicación se actualiza mientras escribes.
- Revisa la tabla de campos para ver qué valores coincide exactamente cada posición.
- Lee las próximas ejecuciones con la cuenta relativa al lado. Si la primera fecha no es la que esperabas, la expresión está mal.
- Usa los ejemplos como punto de partida para las programaciones más habituales.
Los campos de una expresión cron
| Posición | Campo | Rango |
|---|---|---|
| 1 (solo en 6 campos) | Segundo | 0–59 |
| 2 | Minuto | 0–59 |
| 3 | Hora | 0–23 |
| 4 | Día del mes | 1–31 |
| 5 | Mes | 1–12 o JAN–DEC |
| 6 | Día de la semana | 0–7 o SUN–SAT (0 y 7 = domingo) |
Sintaxis admitida en cada campo
*— cualquier valor?— igual que*(usado por Quartz en los campos de día)5— un valor exacto1,15,30— una lista de valores1-5— un rango continuo*/15— cada 15 unidades, desde el inicio del rango10-30/5— un paso dentro de un rangoMON-FRI,JAN,JUL— nombres en lugar de números
Unix (5 campos) frente a Spring y Quartz (6 campos)
Esta es la trampa que más incidentes provoca. El crontab de Unix trabaja con resolución de minuto y usa cinco campos. El @Scheduled de Spring y Quartz añaden un campo de segundos al principio, seis en total. Copiar una expresión de un artículo sobre crontab directamente a una anotación@Scheduled desplaza todos los campos una posición: lo que era el minuto pasa a ser el segundo, y el job empieza a ejecutarse cada hora en lugar de una vez al día. La herramienta detecta cuál de los dos formatos has escrito y avisa cuando interpreta la expresión como seis campos.
La regla de O entre día del mes y día de la semana
Cuando ambos campos de día son distintos de *, cron los combina con O, no con Y. La expresión 0 0 1 * 1 no significa "el primer lunes del mes": se dispara el día 1 de cada mesy también todos los lunes. Para restringirla de verdad, deja uno de los dos campos como * y haz la comprobación adicional dentro del propio job.
Zona horaria: dónde se ejecuta realmente la programación
Cron no tiene zona horaria propia — usa la del proceso que lo ejecuta. Un contenedor en UTC, un servidor enAmerica/Sao_Paulo y tu portátil producen tres resultados distintos para la misma expresión. La simulación de esta página usa la zona horaria de tu navegador, mostrada encima de la lista; compárala con la del entorno de producción (en Spring, el atributo zone de @Scheduled) antes de dar por buena la programación.
Atajos
@yearly/@annually—0 0 1 1 *@monthly—0 0 1 * *@weekly—0 0 * * 0@daily/@midnight—0 0 * * *@hourly—0 * * * *@reboot— al iniciar el sistema (sin horario futuro previsible)
Todo se ejecuta en tu navegador
La expresión nunca se envía a ningún servidor. Todo el análisis y la proyección de fechas ocurren localmente, algo que importa cuando la expresión viene de un archivo de configuración de producción.