3か月ごとにcronジョブを実行する方法は?


回答:


68

次のスクリプトは、1月1日、4月、7月、10月の03:30にスクリプトを実行します

30 03 01 Jan,Apr,Jul,Oct * /path/to/script

あるいは、それほど明白ではない

30 03 01 */3 * /path/to/script

1月、4月、7月、10月1日の3か月ごとに03:30に実行されます。


4
+1:私は常に/表記法が最も明白だと思っていました...可能な限り使用します。(crontabのスケジューリング部分にある言葉は私を驚かせます... / 3ができなかった場合、「0 0 1 3,6,9,12 * /path/to/script.bash」を行います)
悪魔のような子犬

11
*/34か月ごとではありません(12/3 = 4)。
ウォーレン

8
@warrenいいえ。ここでのロジックは、MODの真理に関するステートメントです。例:if(12%3 == 0):run_script()。私もこれについて考えました!いい質問ですね。
Goahnary

1
@Goahnary私も説明を求めてしばらくしてから気づいた:)
ウォーレン

3
@warrenは、実際には除算ではなくmod演算子でなければなりません。しかしまあ_(ツ)_ /¯
Goahnary

7

Wikipediaには、Cronの構成方法に関する説明があります。

特定のケースでは、Cron Expressionを実行して3か月ごとに実行できます。明らかに、スケジュールに合わせて月を変更してください。

0 0 1 JAN,APR,JUL,OCT  * /path/to/script.bash

2
-1これは正解としてマークされていますが、フィールドの順序が間違っているためエラーになり、正しい順序であったとしても、1月、4月、7月、10月まで毎日深夜に実行されます(例:01/01 02 / 01 ... 31/01 01/04 ..)3か月に1回だけではありません。私の答えはうまくいくが、受け入れられなかった。悲しい!
リチャードホロウェイ

@Richardホロウェイ-サーバー障害の謎は-タイプミスを指摘して私の答えのおかげを更新しました
ジョン・ローデス

1
変更を反映するために-1を削除しました。
リチャードホロウェイ

また、カンマの後にスペースを入れないでください。多くのcron実装では、カンマが区切り文字として認識されます。数値の月を要求する実装に出くわすかもしれませんが、最近ではこれはまれだと思います。
デビッドスピレット

@David Spillett、私たちは最後にそこに到着することに感謝します。良識があれば、それを削除します;)
ジョンRhoades
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.