Como o cron lida com os restos nas tarefas "de vez em quando"

13

Se eu fizer isso:

*/9 * * * * /path/to/wotnot

A que horas a tarefa será executada em duas horas, a partir das 09h00

É um:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57

ou B:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54
Jesse
fonte

Respostas:

31

Ao olhar para um intervalo, você o interpreta apenas nessa coluna; portanto, '* / 9' na coluna de minutos significa "listar todos os minutos e, em seguida, selecionar cada nono valor". Essa seleção é redefinida na parte superior da hora; portanto, você reinicia em xx: 00, xx: 09, xx: 18 etc. a cada hora.

Também pode ser lido como "a cada nove minutos a cada hora", implicando a redefinição na parte superior da hora.

Portanto, o comportamento real que você verá corresponde à opção B.

John
fonte
Esta é a única resposta que parece realmente responder à pergunta. Você tentou fazer isso para ter certeza?
precisa saber é
Nos últimos 10 minutos? Não. Nos últimos três meses? Sim, embora não especificamente em um intervalo de nove minutos.
John
Não vejo por que eu me importaria quando você o fez, mas somente se. Obrigado.
precisa saber é
1
Ex-colegas de trabalho ficam irritados com "não, você não testou, está confiando na sua memória defeituosa!" em situações semelhantes (é claro, 5 minutos depois eles se afastam irritados depois que eu provar que ainda funciona), então eu criei o hábito de me proteger contra isso com antecedência.
John
2
A primeira etapa do teste é garantir que você tenha a mesma marca e versão do cliente (neste caso, Jesse). Até agora, não vejo nenhuma pista sobre o cron que ele está usando. (É provável Vixie Cron, e esta característica básica é provável estável entre versões desse programa.)
Kaz
22

Para confirmar a resposta de John, */nna coluna dos minutos significa "quando o minuto for 0 mod n". Aqui está uma crontabentrada:

*/7 * * * *  date >> /tmp/foo

e aqui está a saída:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013

Observe que a diferença entre os dois últimos tempos não é de sete minutos, porque após nn: 56 a próxima vez que */7corresponder é `nn + 1: 07.

Sim, eu sei que esses tempos estão no futuro (ou estavam quando eu postei isso); Eu tive que acelerar o relógio do sistema rapidamente para obter uma resposta rápida.

Chapeleiro Louco
fonte
5
+1 pelo esforço :)
Sven