Qué son, para qué sirven, formato y ejemplos de las expresiones cron

Escrito por picodotdev el .
java planeta-codigo programacion
Enlace permanente Comentarios

Las expresiones cron son el equivalente de expresiones regulares para seleccionar fechas, instantes de tiempo o periodos. Normalmente se utilizan para planificar la ejecución de tareas automatizadas en librerías como Spring o Quartz o cron de GNU/Linux en los momentos seleccionados llegando a la precisión del segundo. Algunas expresiones de fechas pueden ser sencillas como a las 10:15 AM de todos los días o tan complejas como a las 10:15 de cada tercer viernes de cada mes.

Los propósitos de planificar tareas con expresiones cron son ejecutar procesos automatizados, por ejemplo enviar un correo electrónico a un determinada hora de cada día o generar un informe a las 3:00 de la noche de cada viernes.

Formato y posibles valores en cada campo

El formato de las expresiones cron se compone de varios campos separados por un espacios.

1
second minute hour day-of-month month day-of-week [year]
formato-cron.txt

Según el campo hay varios valores posibles. En los valores numéricos de day-of-week los días empiezan por domingo, el valor 1 es domingo, el lunes es 2 y el 7 es el sábado.

Campo Requerido Valores permitidos Caracteres especiales permitidos
Seconds 0-59 , - * /
Minutes 0-59 , - * /
Hours 0-23 , - * /
Day of month 1-31 , - * / L W
Month 0-11 o JAN-DEC , - * /
Day of week 1-7 o SUN-SAT , - * ? / L #
Year No vacío o 1970-2099 , - * /

Los significados de los valores son:

  • * (todos): es usado para seleccionar cada unidad de tiempo. Por ejemplo, * en el campo minuto significa cada minuto.
  • ? (cualquiera): es utilizando en los campos day-of-month y day-of -week para denotar un valor arbitrario. Por ejemplo, si se quiere seleccionar las fechas de el quinto día de cada mes independientemente del día de la semana, entonces se especifica un ? en el campo day-of-week.
  • (rango): es usado para seleccionar rangos de valores. Por ejemplo, 7-11 en el campo hour significa entre las 7 y las 11.
  • , (valores): es usado para especificar varios valores. Por ejemplo, MON,WED,FRI en el campo day-of-week significa el lunes, miércoles y viernes.
  • / (incrementos): es usado para especificar valores en incrementos. Por ejemplo, el valor 5/15 en el campo minute significa en el minuto 5 y con incrementos de 15 minutos siendo los minutos de cada hora seleccionados 5, 20, 35 y 50.
  • L (último): tiene diferentes significados según el campo en el que se usa. Por ejemplo, si es aplicado al campo day-of-month, entonces significa el último día de cada mes, el día 31 para enero o anterior en otros meses con menos días. Puede usarse con un desplazamiento como L-3, esto significa 3 días antes del último día del mes. En el campo day-of-week significa el último día de la semana. También puede usarse con otro valor en el campo day-of-week, como 6L lo que significa el último viernes del mes.
  • W (día entre semana): es usado para especificar en día entre semana (de lunes a viernes) más cercano dado un día del mes. Por ejemplo, si se especifica 10W en el campo day-of-month significa el día entre semana más cercano al 10 de cada mes. De modo que si el día 10 del més es sábado se selecciona el viernes 9 y si el día 10 es domingo se selecciona el lunes 11. Si se especifica 1W en en day-of-month y el día 1 es sábado, entonces se selecciona el dia lunes 3, esto es, no se salta al mes anterior.
  • # (ocurrencia): es usado para especificar el cardinal de la ocurrencia de una semana del mes. Por ejemplo, el tercer viernes del mes se indica con 6#3 en el campo day-of-week.

Los valores /, L, W y # son caracteres no estándares, para comprobar si están soportados hay que consultar la documentación de la implementación de las expresiones cron, varía según la herramienta.

Ejemplos y generador de expresiones cron

Las expresiones cron complejas son dífíciles de crear, para asegurar que la expresión cron está bien construida o para generarlas de forma sencilla hay alguna utilidad en internet, una de ellas es este generador y explicador de expresiones cron.

Algunos ejemplos de expresiones con su explicación son los siguientes.

Expresión cron Explicación
0 0 12 * * ? Cada día a las 12:00 PM (12 del medio día)
0 15 10 * * * Cada día a las 10:15 AM
0 15 10 * * ? 2005 Cada día a las 10:15 AM durante el año 2005
0 * 14 * * ? Cada minuto de la hora 14, de cada día
0 0/5 14 * * ? Cada 5 minutos de la hora 14 empezando en el minuto 0, de cada día
0 0/5 14,18 * * ? Cada 5 minutos de las horas 14 y 18 empezando en el minuto 0, de cada día
0 0-5 14 * * ? Cada minuto entre 0 y 5 de la hora 14, de cada día
0 10,44 14 ? 3 WED A las 14:10 y 14:44 de cada miércoles de marzo
0 15 10 ? * MON-FRI A las 10:15 AM de cada lunes, martes, miércoles, jueves y viernes
0 15 10 15 * ? A las 10:15 AM del día 15 de cada mes
0 15 10 L * ? A las 10:15 AM del último día del mes
0 15 10 ? * 6L A las 10:15 AM del último viernes del mes
0 15 10 ? * 6L 2002-2005 A las 10:15 AM de cada viernes del mes de los años 2002, 2003, 2004 y 2005
0 15 10 ? * 6#3 A las 10:15 AM del tercer viernes de cada mes
0 0 12 1/5 * ? A las 12 PM (12 del medio día) cada cinco días del mes, empezando desde el primer día del mes
0 11 11 11 11 ? Cada 11 de noviembre a las 11:11 AM
Comparte el artículo: