Expresión cron

Explica un cron de Linux, Spring o Quartz, o constrúyelo por campos, y lista las próximas 10 ejecuciones en la hora local de este equipo. Armar un crontab

Armar un crontab

Campos

Cuándo se dispara este plan

Elige Linux Crontab (5 campos), Spring @Scheduled (6 campos, los segundos delante) o Quartz (6 campos, o 7 con el año). La página explica cada campo y lista las próximas 10 ejecuciones en el reloj de este equipo. No instala la tarea. Para armarla desde una hora o desde @daily, usa el generador de crontab. Las marcas de tiempo son marca de tiempo Unix.

Cómo se usa

  1. Formato es Linux Crontab (5), Spring @Scheduled (6) o Quartz (6–7). La línea bajo el menú dice el orden de los campos y qué número es el domingo.
  2. Escribe la expresión, abre Preajuste o cambia cada fila de Campos. Preajuste incluye Cada minuto, Cada hora, Cada día a medianoche, Cada domingo a medianoche, Días laborables, 9–17, cada 15 minutos y Día 1 del mes a medianoche. Los botones bajo el campo cargan esa lista para el formato actual, y también Cada día a las 02:00, Fin de semana a las 09:00, Minutos 5/15, Cada 2 horas en el minuto 30 y el 1 de enero. Spring y Quartz añaden Último día del mes a las 23:00, el día laborable más cercano al 15, el primer lunes a las 10:15 y el último viernes a las 10:15. Quartz añade también el 1 de enero de 2030. El enlace junto a los botones abre el generador de crontab. Cada fila tiene Cada, Rango, Paso y Valores. Valores muestra los números: segundos y minutos 0–59, horas 0–23, días 1–31, meses 1–12, días SUN–SAT. Spring y Quartz también tienen Sin fijar (?), Último día (L), Último día laborable (LW), Día laborable más cercano (W), Enésimo día (#) y Último día de la semana (nL). Un cambio en Campos reescribe la expresión. Un campo que las filas no pueden mostrar se queda en Personalizado y conserva el texto.
  3. Actualizar al escribir está marcado. Explicar se ejecuta una vez. Mostrar ejemplo carga el ejemplo de días laborables del formato actual: Linux */15 9-17 * * 1-5, Spring 0 */15 9-17 * * MON-FRI, Quartz 0 */15 9-17 ? * MON-FRI.
  4. El resultado nombra cada campo y después Próximas 10 ejecuciones. Borrar todo vacía la expresión y el resultado y devuelve cada campo a Cada. Copiar resultado copia ese texto. Cambiar de formato añade o quita los segundos, convierte ? en * en Linux y reescribe los números de la semana como SUN–SAT para conservar los mismos días.

Qué fechas coinciden

Linux es minuto, hora, día del mes, mes, día de la semana. El domingo es 0, 7 o SUN. El lunes es 1. No hay ?, L, W ni #. Si el día del mes y el día de la semana están limitados, basta con que coincida uno, y el resultado lo dice.

Spring añade los segundos delante. El domingo usa los mismos números que Linux. ? ignora ese campo. L es el último día del mes. 15W es el día laborable más cercano al 15 y no sale del mes. LW es el último día laborable. MON#1 es el primer lunes. 6L es el último sábado, porque aquí 6 es sábado.

Quartz usa los mismos seis campos y un año opcional como 2024-2030. El domingo es 1 o SUN. El lunes es 2. El sábado es 7. 6L es el último viernes. El día o el día de la semana debe ser ?, como en 0 0 2 * * ? para las 02:00 cada día. Si ambos son concretos, el resultado sigue listando una ejecución cuando coincide cualquiera y avisa. SUN–SAT y JAN–DEC valen en cualquier mayúscula y significan el mismo día o mes en los tres formatos.

Un guion es un rango, una coma una lista y una barra un paso. */15 avanza desde el inicio del campo cada 15. 5/15 empieza en 5 hasta el final, así que los minutos son 5, 20, 35 y 50. Las horas son locales, no UTC. Con campo de segundos la lista avanza por segundos; si no, por minutos.

Dónde se usa

  • Revisar una línea de crontab como 0 2 * * * antes de instalarla.
  • Escribir el Spring 0 0 2 * * * para las 02:00 cada día.
  • Revisar el Quartz 0 15 10 ? * 6L (último viernes a las 10:15) o 0 0 23 L * ? (23:00 el último día del mes).

Preguntas

¿Por qué las 02:00 son cinco campos en Linux y seis en Spring?

Linux no tiene segundos, así que las 02:00 son 0 2 * * *. Spring y Quartz ponen los segundos delante: la misma hora es 0 0 2 * * * o, en Quartz, 0 0 2 * * ?.

¿Qué significa el signo de interrogación?

Ese campo no está fijado. Quartz lo quiere en el día del mes o en el día de la semana. 0 0 2 * * ? son las 02:00 cada día.

¿El 1 es domingo?

En Linux y Spring, 1 es lunes y el domingo es 0 o 7. En Quartz, 1 es domingo y 2 es lunes. SUN es domingo en los tres.

El reloj no coincide con UTC.

Próximas 10 ejecuciones usa la zona horaria local de este equipo.