crontabスケジュールルールの誤解


1

1つのルールが予期せず動作するという奇妙な動作があります。

*/40 * * * * myshellcommand here

私はそれが40分ごとに実行されますが、例えば

00.00
00.40
01.20
02.00
etc

しかし、代わりに実行されます

00.00
00.40
01.00
01.40
02.00
etc.

誰が何が間違っているのか考えていますか?

回答:


3

何も間違っていません。意図したとおりに機能しています。*毎時/日/月の開始時に自身をリセットします。別の言い方をすれば、*は問題の値の最大範囲の代用です。そのため、分列の*は0〜59を表し、* / 40は「0から開始し、40分ごとに最大59まで実行する」ことを意味します。詳細については、cron Wikipediaページの「特殊文字」を参照してください。

おそらく必要なことは、20分ごとにジョブを実行し、プログラムに実行するかどうかを決定させることです。または、2行で実行します

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

これは、もう少しコンパクトな形式で記述できることに注意してください。

0,40 */2    * * * myshellcommand
20   1-23/2 * * * myshellcommand

この場合、* / 2は0から始まる1時間おきを示し(*は0-23に等しいため)、1-23 / 2は1時間から始まる1時間おきを示します。


ありがとう。おそらくあなたは正しい。他の意見が表示されない場合、私は正しいようにあなたの答え受け入れるだろう
heximal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.