===== Expresiones CRON ===== \\ Para comenzar a explicar su formato, primero hay que recordar que una expresión CRON no es otra cosa que una cadena de texto compuesta por 6 ó 7 campos separados por espacios en blanco, los cuales describen los detalles individuales de la tarea programada. Los campos y sus posibles valores son los siguientes: \\ \\ \\ \\ \\ Los campos tienen un orden concreto a la hora de indicar a que nos estamos refiriendo. "Segundos" "Minutos" "Horas" "Día del mes" "Mes" "Día de la semana" "Año" (Éste último es opcional y normalmente no se especifica nunca) 0 0/5 * * ? SUN-MON -> Expresión CRON para programar la ejecución de una tarea cada 5 minutos. Como dato importante, no se permite tener al mismo tiempo en los campos día del mes y día de la semana un asterisco.\\ La idea es que solo se ponga en uno de ellos y en el otro se ponga el caracter '?'.\\ Para no estar pendientes de esto, en el campo día de la semana pondremos siempre una '?' si no especificamos ningún rango o valor concreto. ==== Ejemplos de Expresiones Cron ==== "Segundos" "Minutos" "Horas" "Día del mes" "Mes" "Día de la semana" "Año" (Este último es opcional y normalmente no se especifica nunca) ^ Ejemplo ^ Descripción ^ ^ 0 0/5 * ? * ? | Se ejecuta cada 5 minutos. | ^ 0 15 * ? * ? | Se ejecuta en el minuto 15 de cada hora. | ^ 0 0 12 ? * WED | Se ejecuta cada Miércoles a las 12:00:00. | ^ 0 0 15 ? * MON-FRI | Se ejecuta a las 15:00:00 de Lunes a Viernes, ambos inclusive. | ^ 0 0 15 2 * ? | Se ejecuta a las 15:00:00 del día 2 de cada mes. | ^ 0 15 15 L * ? | Se ejecuta a las 15:15:00 del último día de cada mes. | ^ 0 15 15 ? * 6L | Se ejecuta a las 15:15:00 del último viernes del mes. | ^ 0 20 15 1/5 * ? | Se ejecuta a las 15:20:00 cada 5 días a partir del primer dia del mes. | ^ 10 0/5 * ? * ? | Se ejecuta cada 5 minutos, pasados 10 segundos después del minuto (00:00:10 am, 00:05:10 am, etc.) | ^ 0 30 10-13 ? * WED,FRI | Se ejecuta a las 10:30, 11:30, 12:30, and 13:30, cada Miércoles y Viernes. | ^ 0 0/30 8-9 5,20 * ? | Se ejecuta cada media hora entre las 8am y las 10am del 5º y 20º día de cada mes. Nótese que no se ejecutará a las 10:00 am, sólo a las 8:00, 8:30, 9:00 y 9:30 . | === Campos y Valores Permitidos === ^ CAMPO ^ VALORES PERMITIDOS ^ CARACTERES ESPECIALES ^ OBSERVACIONES ^ ^ Segundos | 0-59 | **, - * /** | | ^ Minutos | 0-59 | **, - * /** | | ^ Horas | 0-23 | **, - * /** | | ^ Día del mes | 1-31 | **, - * ? / L W** |OJO con especificar el 31 por ejemplo, evidentemente hay meses que no tienen 31 días. (Usar la "L") | ^ Mes | 1-12 o JAN-DEC | **, - * /** |Los literales válidos son: JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV y DEC. | ^ Día de la semana | 1-7 o SUN-SAT | **, - * ? / L #** | | ^ Año (Opcional) | Vacio, 1970-2099 | **, - * /** | | === Caracteres Especiales === ^ Carácter Especial ^ Descripción ^ Ejemplos ^ ^ * |Selecciona todos los valores de un campo | | ^ ? |Selecciona sin un valor específico (cualquiera) | | ^ - |Selecciona un rango de valores |(4-6 -> de 4 a 6 ambos inclusive) (MON-FRI -> de Lunes a Viernes ambos inclusive) | ^ , |Selecciona valores específicos |(MON,WED,FRI es decir Lunes, Miércoles y Viernes) | ^ / |Selecciona incrementos a partir del primer valor |(0/15 -> cada 15 minutos comenzando desde el minuto 0 -> 15, 30 ,45) | ^ L |(Día del mes) Selecciona el último día del mes | | ^ L |(Día de la semana) Selecciona el último día de la semana (7 / Sábado / SAT) | | ^ xL |(Día de la semana) Selecciona el último día de ese tipo del mes |(6L ó FRIL -> el último Viernes del mes) | ^ W |Selecciona el día de la semana (de lunes a viernes) más cercano al día (weekday) |(15W -> el día de la semana (Lunes a Viernes) más cercano al dia 15 del mes) | ^ LW |Selecciona el último día (de lunes a viernes) del mes | | ^ # |Selecciona la posición de un día del mes |(6#3 -> el tercer viernes del mes) | === Rangos o Listas de valores === Las sub expresiones pueden contener rangos y/o listas.\\ Por ejemplo, el campo para el día de la semana en el ejemplo anterior (que era "**WED**") podría ser reemplazado con "**MON-FRI**", "**MON,WED,FRI**", o incluso "**MON-WED,SAT**". === Carácter "/" === El caracter "**/**" puede usarse para especificar incrementos a un valor.\\ Por ejemplo, si pones "**0/15**" en el campo de los minutos, significa "cada 15 minutos de la hora, empezando en el minuto 0". Si usas "**3/20**" en el campo de los minutos, significaría "cada 20 minutos de la hora, empezando en el minuto 3" – o en otras palabras es lo mismo que especificar "**3,23,43**" en el campo de los minutos.\\ Nótese que "**/35**" no significa "cada 35 minutos" – significa "cada 35 minutos de la hora, empezando en el minuto 0", en otras palabras, es lo mismo que especificar "**0,35**". === Carácter "L" === El carácter "**L**" se permite para los campos día del mes y día de la semana.\\ Este carácter es un atajo para "last (último)", pero tiene un significado diferente en cada uno de los dos campos. Por ejemplo, el valor "**L**" en el campo día del mes significa "el último día del mes " - día 31 para Enero, día 28 para Febrero cuando no sea año bisiesto. Si se usa en el campo día de la semana por sí mismo, simplemente significa 7 o "**SAT**". Pero usado en el campo día de la semana después de otro valor, significa "el último día xxx del mes" – por ejemplo "**6L**" ó "**FRIL**", ambos significan "el último viernes del mes ". También puedes especificar un intervalo desde el último día del mes, como "**L-3**" lo que significaría el tercer día antes del último día del mes. **Cuando se usa la opción "L", es importante no especificar listas, o rangos de valores, puesto que conseguirás resultados confusos o inesperados**. === Carácter "W" === El caracter "**W**" se usa para especificar el día de la semana (de Lunes a Viernes) más cercano al día especificado. === Carácter "#" === El caracter "**#**" se usa para especificar "el enésimo" XXX día de la semana del mes.\\ Por ejemplo, el valor "**6#3**" o "**FRI#3**" en el campo día de la semana significa "el tercer viernes del mes".