曜日・日の衝突、間隔の誤解、重複する作業
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)や重複実行の防止を併せて用意しておくと安全です。書いた式は上のツールの次回の実行時刻で事前に検証してください。