今月、cronジョブが実行されたのはなぜですか?


31

今日は2016年11月1日、または2016-11-01の(明確な)数字です。

次のように設定されたユーザーcronジョブがあります。

# m h  dom mon dow   command
33  3   1  */2  *    /home/user/...

曜日が何であっても、月の最初の3時33分に隔月で実行することになっていますが、11が2で割り切れない場合でも、何らかの理由で今日実行されました。

誰かがこれを説明できますか?2による除算の仮定は間違っていますか?

編集:言及するのを忘れて、私はcronDebian 8.6「Jessie」マシンでバージョン「3.0pl1-127 + deb8u1」を実行しています。



あなたはその年の2016年の月の11日目について話しているのです。:)(アメリカで最も一般的な日付の順序は月日年です。)

@chicksはこの質問の編集履歴をチェックします。最初にあなたが述べた形式を使用しました;-)
comfreak

あなたは月/日/年を意味する@雛?
user253751

@immibis No. ... comfreak:lol
chicks

回答:


61

/算術式ではなく、代わりに、それは上「ステップ値」について説明許容値の範囲を。したがって、月は常にの1代わりにで始まるため0/2「他のすべての値を取る」ことを意味し、結果は(1、3、5、7、9、11)になります。

これはマニュアルページでも説明されていますが、これはひどく明確でわかりやすいものではありません。

ステップ値は範囲と組み合わせて使用​​できます。範囲の後に「<number>」を指定すると、範囲内での数値のスキップが指定されます。たとえば、時間フィールドで「0-23 / 2」を使用して、1時間おきのコマンド実行を指定できます(V7標準の代替は「0,2,4,6,8,10,12,14,16 、18、20、22」)。アスタリスクの後のステップも許可されているため、「2時間ごと」と言いたい場合は、「* / 2」を使用します。


2
あなたの答えをありがとう、私はちょうどマニュアルページをもう一度読んで、私の頭の中でこれを実行した後、自分自身でこれを実現しました。私は通常、数字が0で始まる短期的なcronジョブでのみ作業していました。
-comfreak

18
この質問が頻繁に聞かれない理由を思いついただけで、同じ結論に達しました。なぜなら、月フィールドに「*」が付いた仕事をする人はほとんどいないからです。
スヴェン

一つの質問、数が分割されない場合、どうなり*/5ますか?それは1,6,11,1,6 ...でしょうか?それとも1,6,11,4,9 ...でしょうか?「値の許容範囲を超えている」とは、メモリがないことを意味すると想定していましたが、今はそのことについてあまり確信が持てませんでした。
マリウスシウラム

@MariusSiuram:最初のバリアント。繰り返しますが、これは算術演算ではありません。crond可能な値のリストを取得し、ステップセレクターを1回適用してから、これらの結果を繰り返し使用します。
スヴェン

4

今日は11月の最初の日です。

* / 2は、あなたが言うようにcronjobが隔月で実行されることを意味します。

そのため、次の月(12月)にはcronjobは実行されませんが、実行後の月(1月)は実行されます。

今月の前の月(10月)、cronjobは実行されませんでした。しかし、9月にそうでした。


1
ですから*/2、月のフィールドは1-11/2でなくに等しいとみなされます2-12/2。私はあなたが間違っていると言っているわけではありませんが、サポート文書を作成できますか?
MadHatterは、

@MadHatter Svenはそれをうまく説明しました。
孤児

1
私は同意し、何よりも彼が信頼できる情報源を引用した。
MadHatterはモニカを

2
指摘して
おく
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.