O trabalho do Cron é executado com mais frequência do que eu pensava que deveria

2

Eu tenho um cron job que está sendo executado duas vezes por hora. Corre uma vez em HH: 00 e uma vez em HH: 45. Isso é estranho porque tentei especificar que ele deveria ser executado a cada 45 minutos da seguinte forma:

*/45 * * * * python my_job.py

Isso funciona bem para outros trabalhos que eu executo a cada 5 minutos, bem como trabalhos que são executados a cada 20 minutos. No entanto, eu me pergunto se o fato de que uma hora não é divisível por 45 minutos está causando um comportamento estranho. Por que meu cron job funcionaria duas vezes por hora com essa configuração?

    
por BlackVegetable 04.09.2015 / 00:06

2 respostas

4

Seu trabalho é executado a cada minuto que é um múltiplo de 45, ou seja, sempre que minute % 45 == 0 . Então, ele será executado em hh: 00 e hh: 45.

Se fosse um fator exato de 60, ele seria executado em intervalos de tamanho uniforme.

Para fazê-lo funcionar em intervalos de 45 minutos, acho que você precisará de três regras, uma para cada hora (mod 3).

Embora eu não tenha tentado, acredito que o seguinte funcionará:

0,45 0-23/3 * * * /usr/local/bin/myjob
30   1-23/3 * * * /usr/local/bin/myjob
15   2-23/3 * * * /usr/local/bin/myjob
    
por 04.09.2015 / 00:22
1

A forma grosseira de fazer isso via cron seria:

    0,45 0,3,6,9,12,15,18,21  * * *
    30   1,4,7,10,13,16,19,22 * * *
    15   2,5,8,11,14,17,20,23 * * * .

Uma maneira mais elegante de fazer isso seria modificando seu script para que ele esteja ciente do tempo e se verifique contra uma entrada cron executando a cada 15 minutos:

    */15 * * * * ... . 
    
por 04.09.2015 / 00:36

Tags