cron 式の読み方と書き方
cron 式の 5 フィールド(分・時・日・月・曜)と特殊記号 *, /, -, , を例で解説。よくあるパターン(毎日 3 時、毎週月曜、5 分おき)のレシピ集。
公開 · 更新 · yuzlrin
5 フィールドの意味
┌─ 分 (0–59)
│ ┌─ 時 (0–23)
│ │ ┌─ 日 (1–31)
│ │ │ ┌─ 月 (1–12)
│ │ │ │ ┌─ 曜 (0–6, 0 = 日曜)
│ │ │ │ │
* * * * * ← 毎分
この5フィールドのほか、Cronieのシステム用crontabではコマンド前に実行ユーザー欄があります(これは秒欄ではありません)。秒欄や年欄を使うQuartz等の構文は別仕様で、対象スケジューラを確認してください。
特殊記号の使い方
・* : その単位のすべて
・, : 並列指定(例 '0,15,30,45' は 0 / 15 / 30 / 45 分)
・- : 範囲(例 '9-17' は 9 時から 17 時)
・/ : ステップ(例 '*/5' は 5 ごと)
Lや#はCronieのこの5フィールド形式では扱いません。Quartzなどの拡張構文ではフィールド数・曜日番号も異なるため、その実装の公式仕様を確認してください。
よくあるレシピ
・毎日 0:00: 0 0 * * *
・毎日 9:00: 0 9 * * *
・15 分おき: */15 * * * *
・平日 9:00: 0 9 * * 1-5
・毎週月曜 0:00: 0 0 * * 1
・毎月 1 日 0:00: 0 0 1 * *
・毎年元日 0:00: 0 0 1 1 *
曜日番号や拡張記号の受け入れは実装依存です。対象のcron/schedulerのマニュアルで確認してください。
関連ツール
よくある質問
タイムゾーンは?
実装ごとに確認が必要です。CronieではcrontabのCRON_TZが表の時刻解釈を指定し、ログはdaemonのローカル時刻を使います。実行コマンドのTZ設定とスケジュールのタイムゾーンは同じとは限りません。JSTで実行する場合も、対象のschedulerの仕様と設定を確認してください。
日と曜日を両方指定するとどうなる?
Cronieでは、日と曜日の両方が制限される場合にいずれかが一致すれば実行されます。例 '0 0 15 * 1' は15日または月曜です。他の実装の規則は利用環境のマニュアルを確認してください。
cron と at コマンドの違いは?
cronは繰り返し、atは1回だけの指定時刻実行に使います。atの利用には対応するdaemonが必要です。利用環境によってsystemdのtimerやクラウドのschedulerなども選択肢になります。再起動時の扱い・失敗時の再実行・永続性を確認して選んでください。
出典・参考資料
本文は上記資料を参考にした解説です。仕様やサービスの運用は変更されることがあるため、実際の利用時は公式資料も確認してください。