クローンジョブは思ったより頻繁に実行されます。

クローンジョブは思ったより頻繁に実行されます。

1時間に2回実行されるクローンジョブがあります。 HH:00に1回、HH:45に1回実行されます。次のように45分ごとに実行するように指定しようとしているので、これは奇妙です。

*/45 * * * * python my_job.py

これは、5分ごとに実行される他のタスクだけでなく、20分ごとに実行されるタスクにも有効です。ところで、1時間を45分に分けることができないという事実が奇妙な動作を引き起こす可能性があるのだろうか。この設定では、クローンジョブが1時間に2回実行されるのはなぜですか?

答え1

minute % 45 == 0ジョブは45の倍数である1分ごとに実行されます。つまり、 。したがって、hh:00とhh:45で実行されます。

60の正確な引数の場合は、同じサイズの間隔で実行されます。

45分間隔で実行するには、それぞれ1時間ずつの3つのルール(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 * * * * ... . 

関連情報