크론 작업이 생각보다 자주 실행됩니다.

크론 작업이 생각보다 자주 실행됩니다.

한 시간에 두 번 실행되는 크론 작업이 있습니다. HH:00에 한 번, HH:45에 한 번 실행됩니다. 다음과 같이 45분마다 실행되도록 지정하려고 하기 때문에 이것은 이상합니다.

*/45 * * * * python my_job.py

이는 5분마다 실행되는 다른 작업뿐만 아니라 20분마다 실행되는 작업에도 효과적입니다. 그런데 1시간을 45분으로 나눌 수 없다는 사실이 이상한 동작을 유발할 수 있는지 궁금합니다. 이 설정을 사용하면 크론 작업이 한 시간에 두 번씩 실행되는 이유는 무엇입니까?

답변1

minute % 45 == 0작업은 45의 배수인 1분마다 실행됩니다 . 즉, . 따라서 hh:00 및 hh:45에 실행됩니다.

60의 정확한 인수인 경우 동일한 크기의 간격으로 실행됩니다.

45분 간격으로 실행되게 하려면 각각 1시간씩의 세 가지 규칙(mod 3)이 필요하다고 생각합니다.

아직 시도하지는 않았지만 다음이 효과가 있을 것이라고 믿습니다.

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

답변2

cron을 통해 이를 수행하는 대략적인 방법은 다음과 같습니다.

    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 * * * .

보다 세련된 접근 방식은 시간을 인식하고 15분마다 실행되는 cron 항목과 비교하여 자체 검사하도록 스크립트를 수정하는 것입니다.

    */15 * * * * ... . 

관련 정보