cron 式の読み方と書き方
cron 式の 5 フィールド(分・時・日・月・曜)と特殊記号 *, /, -, , を例で解説。よくあるパターン(毎日 3 時、毎週月曜、5 分おき)のレシピ集。
公開 · 更新 · yuzlrin
5 フィールドの意味
┌─ 分 (0–59)
│ ┌─ 時 (0–23)
│ │ ┌─ 日 (1–31)
│ │ │ ┌─ 月 (1–12)
│ │ │ │ ┌─ 曜 (0–6, 0 = 日曜)
│ │ │ │ │
* * * * * ← 毎分
システム cron では先頭に秒を足した 6 フィールド版、または末尾に年を足した 7 フィールド版もあります(cron 実装依存)。
特殊記号の使い方
・* : その単位のすべて
・, : 並列指定(例 '0,15,30,45' は 0 / 15 / 30 / 45 分)
・- : 範囲(例 '9-17' は 9 時から 17 時)
・/ : ステップ(例 '*/5' は 5 ごと)
・L : 最終('L' 月末、'5L' 月末の最終金曜)※ 拡張構文のみ
・# : 第 N 曜日('5#2' 第 2 金曜)※ 拡張構文のみ
よくあるレシピ
・毎日 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 * *
・毎月末 23:59: 59 23 L * * (拡張構文)
・毎年元日 0:00: 0 0 1 1 *
日曜日は 0 か 7 のどちらでも指定できる cron 実装が多いです。
関連ツール
よくある質問
タイムゾーンは?
基本は OS の環境変数 TZ に従います。Docker コンテナやサーバーレスではデフォルト UTC が多いため、JST で動かしたければ TZ=Asia/Tokyo を設定してください。
日と曜日を両方指定するとどうなる?
標準 cron では OR 結合。例えば '0 0 15 * 1'(15 日 OR 月曜)は月曜または 15 日に発火します。AND が欲しければシェル側で別途判定してください。
cron と at コマンドの違いは?
cron は「繰り返し」実行、at は「1 回だけ」の指定時刻実行です。7 日後の 1 回限り実行なら at が適任。at コマンドは atd デーモンが必要で、モダン環境では systemd-run や sleep & 推奨。