cron式を組み立て、意味を日本語で表示します。「毎週月曜の午前9時」のような設定が正しく書けているかを確認できます。
cron式の書き方
┌ 分 (0-59) │ ┌ 時 (0-23) │ │ ┌ 日 (1-31) │ │ │ ┌ 月 (1-12) │ │ │ │ ┌ 曜日 (0-7, 0と7が日曜) │ │ │ │ │ 0 9 * * 1 → 毎週月曜 9:00
よく使う例
| 式 | 意味 |
|---|---|
| */5 * * * * | 5分ごと |
| 0 * * * * | 毎時0分 |
| 0 9 * * * | 毎日9:00 |
| 0 9 * * 1-5 | 平日の9:00 |
| 0 0 1 * * | 毎月1日の0:00 |
| 30 3 * * 0 | 毎週日曜の3:30 |
設定時の注意
- 日と曜日の両方を指定すると、多くの実装で「どちらかに合致」で実行されます
- サーバーのタイムゾーンを確認する(UTC設定なら日本時間と9時間ずれます)
- 処理時間が実行間隔を超えると、多重起動する可能性があります
- 毎時0分など、切りのいい時刻は負荷が集中しやすくなります
設定後に必ず確認すること
cronは黙って失敗します。設定した直後は動いていても、環境の変更で止まっていることに気づかないケースが多いため、ログと通知はセットで用意してください。
- テスト用に短い間隔で1度動かし、想定どおり実行されるか確認する
- 実行ログを残す設定にする(動いていないことに気づけません)
- 失敗時に通知が飛ぶようにする
- 同じ処理が重複起動しないよう、ロックの仕組みを入れる
よくある質問
Q 曜日の数字はどう対応しますか?
0が日曜、1が月曜、6が土曜です。7も日曜として扱う実装が多くあります。
Q 「毎5分」はどう書きますか?
*/5 * * * * です。分のフィールドに */5 を指定します。
Q タイムゾーンはどうなりますか?
cronはサーバーのタイムゾーンで動作します。UTC設定のサーバーでは、日本時間との9時間差にご注意ください。
Q 秒単位の指定はできますか?
標準のcronは分単位です。秒フィールドを持つ実装(Quartzなど)もあります。
