Hoje é 1º de novembro de 2016 ou em números (não ambíguos), 01/11/2016.
Eu tenho um trabalho cron do usuário configurado assim:
# m h dom mon dow command
33 3 1 */2 * /home/user/...
Ele deve ser executado a cada dois meses no primeiro dia do mês às 3:33 da manhã, independentemente do dia da semana, mas por algum motivo foi executado hoje, mesmo que 11 não seja divisível por 2.
Alguém pode me explicar isso? Minha suposição de divisibilidade por 2 está errada?
EDIT: Esqueci de mencionar, estou executando a cron
versão "3.0pl1-127 + deb8u1" em uma máquina "Jessie" do Debian 8.6.
Respostas:
A
/
expressão não é uma aritmética; em vez disso, descreve "valores de etapas" no intervalo de valores permitido . Portanto, como os meses sempre começam com em1
vez de0
,/2
significaria "pegar todos os outros valores", resultando em (1, 3, 5, 7, 9, 11).Isso também está descrito na página de manual, embora isso não seja muito claro e fácil de entender:
fonte
*/5
? Seria 1,6,11,1,6 ... ou seria 1,6,11,4,9 ...? Eu assumi que "acima do intervalo permitido de valores" significa que ele não tem memória, mas agora eu não estava tão certo disso.crond
apenas pega a lista de valores possíveis, aplica o seletor de etapas uma vez e, em seguida, usa esses resultados repetidamente.Hoje é o primeiro dia de novembro.
* / 2 significa que seu cronjob será executado a cada dois meses, como você diz.
Portanto, no próximo mês (dezembro) o cronjob não será executado, mas no mês (janeiro) após.
No mês anterior a este mês (outubro), o cronjob não foi executado. Mas em setembro foi.
fonte
*/2
no campo mês é equivalente a1-11/2
, e não2-12/2
. Não estou dizendo que você está errado, mas você pode produzir alguma documentação de suporte?