cron の DOM×DOW は OR か AND か?JST 運用の落とし穴
・対象: 初心者,中級者・タグ: cron, JST, AND, OR, 運用, internal, archived
対象読者: crontab の DOM/DOW を使い分ける SRE/開発者、CI 運用担当。
この記事で得られること: DOM×DOW の評価論理(OR/AND)の違いと、JST 運用時の検証のコツ・安全策が分かります。
背景
多くのエンジニアが「* * * * *」のような cron 式を使いますが、DOM と DOW を同時指定した場合の動作は一筋縄ではいきません。
OR と AND
- OR: DOM または DOW どちらかが一致すれば実行
- AND: DOM も DOW も両方一致したときだけ実行
'*'の扱い(言語指定付きのコード例)
例えば 0 0 1 * 0 のような式で、DOM=1, DOW=0(=日曜)を指定した場合、OR なら「毎月 1 日と毎週日曜」、AND なら「1 日が日曜のときのみ」実行されます。
0 0 1 * 0 # 毎月1日と毎週日曜(OR)/ 1日が日曜のみ(AND)
具体例
JST と UTC の境界で日付や曜日判定がズレるケースがあるため、実環境の TZ 基準を確認し、必要に応じて UTC 固定で設計・検証します。
失敗例と対策
JST 運用で「1 日が日曜以外も動いてしまった」などの事故が多発します。必ず仕様を確認し、Cron JST ツールで検証しましょう。
まとめ
cron の DOM×DOW 仕様は要注意。JST 運用では特に検証を!