Hoy es el 1 de noviembre de 2016 o en números (no ambiguos), 2016-11-01.
Tengo un trabajo cron de usuario configurado de esta manera:
# m h dom mon dow command
33 3 1 */2 * /home/user/...
Se supone que debe ejecutarse cada dos meses el primero del mes a las 3:33 a.m., sin importar el día de la semana que sea, pero por alguna razón se ejecutó hoy, a pesar de que 11 no es divisible por 2.
Puede alguien explicarme esto? ¿Es errónea mi suposición de divisibilidad por 2?
EDITAR: Olvidé mencionar, estoy ejecutando la cron
versión "3.0pl1-127 + deb8u1" en una máquina Debian 8.6 "Jessie".
Respuestas:
La
/
no es una expresión aritmética, sino que describe "valores de paso" sobre el rango permitido de valores. Entonces, dado que los meses siempre comienzan en1
lugar de0
,/2
significaría "tomar cualquier otro valor", lo que da como resultado (1, 3, 5, 7, 9, 11).Esto también se describe en la página del manual, aunque esto no es terriblemente claro y fácil de entender:
fuente
*/5
? ¿Sería 1,6,11,1,6 ... o sería 1,6,11,4,9 ...? Supuse que "sobre el rango permitido de valores" significa que no tiene memoria, pero ahora no estaba tan seguro de eso.crond
solo toma la lista de valores posibles, aplica el selector de pasos una vez y luego usa estos resultados repetidamente.Hoy es el primer día de noviembre.
* / 2 significa que su cronjob se ejecutará cada dos meses como usted dice.
Entonces, el próximo mes (diciembre) el cronjob no se ejecutará, pero sí el mes (enero) después.
El mes anterior a este mes (octubre) no se ejecutó el cronjob. Pero en septiembre lo fue.
fuente
*/2
en el campo del mes es equivalente a1-11/2
, en lugar de2-12/2
. No digo que esté equivocado, pero ¿puede presentar alguna documentación de respaldo?