como executar o cron job a cada 3 meses?

33

Como seria a entrada do crontab para um trabalho executado no primeiro dia de cada três meses?

haim evgi
fonte
2
O que isso tem a ver com o Apache 2?
quer

Respostas:

68

O script a seguir será executado em 1º de janeiro, abril, julho e outubro às 03:30

30 03 01 Jan,Apr,Jul,Oct * /path/to/script

Alternativamente, mas menos óbvio

30 03 01 */3 * /path/to/script

Será executado a cada três meses às 03:30 no dia 1º de janeiro, abril, julho e outubro.

Richard Holloway
fonte
5
+1: sempre achei que a notação / era a MAIS óbvia ... uso-a sempre que possível. (Palavras na parte de agendamento do crontab me assustam ... eu faria: "0 0 1 3,6,9,12 * /path/to/script.bash" se eu não pudesse fazer / 3)
Satanicpuppy
11
não */3seria a cada quatro meses (12/3 = 4)?
warren
8
@warren Não, não. A lógica aqui é mais uma declaração de verdade mod. Ex: if (12% 3 == 0): run_script (). Eu pensei sobre isso também! Ótima pergunta.
Goahnary
1
@Goahnary percebi que um tempo depois eu pedi para o esclarecimento, também :)
Warren
3
@warren realmente deveria ser um operador de mod ao invés de uma divisão. Mas tudo bem ¯_ (ツ) _ / ¯ #
Goahnary
7

A Wikipedia tem uma boa explicação sobre como configurar o Cron.

Para o seu caso específico, você pode executar uma Expressão Cron para executar a cada 3 meses - obviamente, altere os meses para se adequar à sua programação.

0 0 1 JAN,APR,JUL,OCT  * /path/to/script.bash
Jon Rhoades
fonte
2
-1 Enquanto isso estiver marcado como resposta correta, ocorrerá um erro, pois os campos estão na ordem errada e, mesmo que estivessem na ordem correta, seriam executados todos os dias à meia-noite até janeiro, abril, julho e outubro (por exemplo, 01/01 02 / 01 ... 31/01 01/04 ..) e não apenas uma vez a cada três meses. Minha resposta funcionaria, mas não foi aceita. Triste eu!
Richard Holloway
@ Richard Holloway - os mistérios da culpa servidor - já atualizei a minha resposta Obrigado por apontar o erro de digitação
Jon Rhoades
1
Eu removi meu -1 para refletir a alteração.
Richard Holloway
Você também não deve ter os espaços após as vírgulas; muitas implementações do cron os verão como separadores. Você pode encontrar implementações que exigem meses numéricos também, embora eu pense que isso seja raro atualmente.
precisa saber é o seguinte
@ David Spillett obrigado, chegaremos lá no final ... Possivelmente, minha resposta mais ruim de todas. Se eu tivesse alguma decência eu excluí-lo;)
Jon Rhoades