Cron ガイド
ガイド

Cron 式でよくある間違い

曜日・日の衝突、間隔の誤解、重複する作業

1. 曜日番号の混同 — cron では曜日は0から6までで、0が日曜日です。多くの実装で7も日曜日として受け付けますが、1を日曜日と勘違いして1日ずつずれる間違いがよくあります。月曜日は1、金曜日は5です。

2. 日(day-of-month)と曜日(day-of-week)を同時に指定 — 両方のフィールドを * 以外の値で指定すると、ほとんどの cron はどちらか一方でも一致すれば実行します(AND ではなく OR)。例: 0 0 13 * 5 は「13日または毎週金曜日」に実行されます。「13日の金曜日だけ」ではありません。

3. */n 間隔の誤解*/15 は0から15間隔、つまり0・15・30・45分に実行されます。*/40 のように60を割り切れない値を使うと、0分と40分にのみ実行され、その次は次の時間の0分へ飛ぶため間隔が不規則になります。

4. タイムゾーンの勘違い — cron は通常サーバーのタイムゾーン(たいてい UTC)で動作します。ローカル時間を基準に式を書くと、実際には別の時刻に実行されます。タイムゾーンについては下の別ガイドで詳しく扱います。

5. 重複する作業 — 実行時間が次の予約時刻を超えると、前の作業が終わる前に新しい作業がまた始まることがあります。時間のかかる作業には、ロック(lock)や重複実行の防止を併せて用意しておくと安全です。書いた式は上のツールの次回の実行時刻で事前に検証してください。

資料

スケジュール集

コピーしてすぐ使えるレシピ

構文チートシート

5つのフィールドと特殊文字を一目で

マクロ・別名

@daily のような省略表現

ガイド

cron を正しく理解し、ミスを減らすための実践ガイド