cron式の読み方を5フィールドと記法で理解する|設定例と「実行されない」罠
公開日:2026年7月16日 更新日:2026年9月2日 運営:シルギア(Analyzegear, Inc.) 対象ツール:cron式の説明
cron式は「短い数字と記号の並び」なので、書いた本人でも数日経つと読めなくなりがちです。ここでは丸暗記ではなく仕組みから読めるように、5つのフィールドと記法、定番の設定例、日と曜日のOR挙動、そして「書けたのに動かない」原因までをまとめます。式の意味そのものは、このツールに貼れば日本語1文と各フィールドの解説、さらに直近の実行予定まで即確認できます。
5つのフィールドと、それぞれの範囲
cron式は左から順に、半角スペース区切りで5つの値を並べます。順番と範囲を取り違えると全く別の時刻になるので、まずここを固定で覚えます。
- 分(0〜59)
- 時(0〜23、24時間制)
- 日(1〜31)
- 月(1〜12)
- 曜日(0〜7。0と7がどちらも日曜、1が月曜…6が土曜)
このツールは5つそろっていない式や範囲外の値をエラーとして案内します。たとえば 0 9 * * 1-5 は「分=0/時=9/日=*/月=*/曜日=月〜金」で、平日9:00という意味になります。「時」は24時間制で、0時=真夜中という点が特に間違えやすいところです。
記法(* , - / の意味)と具体例
各フィールドには、単なる数字のほかに4つの記号が使えます。実際にどの値へ展開されるかを、数値で押さえておくと読み間違いが減ります。
- *(アスタリスク)…そのフィールドの「すべて」。分の * は毎分、曜日の * は毎日を意味します。
- -(ハイフン)…範囲。曜日の 1-5 は月〜金の5日、時の 9-18 は9時から18時までの10個の時台。
- ,(カンマ)…列挙。分の 0,30 なら0分と30分の2回だけ。
- /(スラッシュ)…ステップ(間隔)。分の */15 は0・15・30・45の4回(15分ごと)、*/5 は0・5・10…55の12回(5分ごと)。
さらにこのツールは a/n を「a からそのフィールドの最大値まで n 間隔」と解釈します。分の 0/20 は0・20・40の3回、時の 9/3 は9・12・15・18・21時になります。記号は組み合わせも可能で、曜日 1-5/2 は月・水・金、分 0-30/10 は0・10・20・30を表します。
よくある設定例
まずは丸ごと覚えてしまってよい定番を挙げます。ツールの例ボタンからそのまま試せます。
- 0 3 * * * … 毎日3:00(深夜バッチの定番)
- 0 9 * * 1-5 … 平日(月〜金)の9:00
- */5 * * * * … 5分ごと
- 0 0 1 * * … 毎月1日の0:00
- 30 8 * * 1-5 … 平日8:30
このツールは曜日 1-5 を「平日(月〜金)」、0,6 を「土日」とまとめて表示するので、読み手にも伝わりやすくなります。
日と曜日を両方書くと「OR」になる
ここが最大の落とし穴です。日(3番目)と曜日(5番目)を両方とも具体的に指定すると、cronの仕様では「両方に一致」ではなく「どちらかに一致した日」(OR)で実行されます。たとえば 0 0 1 * 1 は「1日に加えて、毎週月曜」の0:00で、月に4〜5回動くこともあります。ツールも「1日、または 月曜」と表示します。「毎月1日が月曜のときだけ」のつもりで書くと、意図と大きくずれます。一方、日か曜日のどちらか一方だけを指定した場合は、そのまま素直にその条件になります。
「次回の実行予定」で目視確認する
読み方に自信が持てないときは、実際に動く日時を見るのが確実です。このツールは式を入力すると、直近の実行予定を最大5件、「2026-09-01 (火) 09:00」の形式で表示します。想像した日時とずれていれば、式が意図どおりでないというサインです。
ただしこの一覧はあなたのブラウザのローカル時刻(現在の日時とタイムゾーン)をもとにした目安です。実際の実行はサーバー側のタイムゾーンや設定に依存するため、本番の稼働時刻とは必ずしも一致しません。最終確認は稼働環境の設定を優先してください。
式は正しいのに実行されない罠
読み方が合っていても動かないときは、cronの外側に原因があることがほとんどです。
- タイムゾーン/サーバー時刻…cronはサーバーの時刻で動きます。UTC設定のサーバーで「9時」と書けば、日本時間の18時に動きます。
- 環境変数・PATH…cronはログイン時のシェル設定を読み込まないため、手元で通るコマンドが cron 内では「command not found」になりがち。実行ファイルは絶対パスで書くか、スクリプト先頭でPATHを定義します。
- 相対パス…作業ディレクトリが想定と違い、ログや出力先の相対パスがずれる。パスは絶対で書くのが安全です。
式そのものの失敗例として、0 24 * * * は時が範囲外(0〜23)でエラー、「深夜0時」は 24 ではなく 0 と書きます。なお本ツールは数値ベースの記法(* */n a/n a-b a,b とその組み合わせ)専用で、@daily などのニックネームや JAN・MON の名前、L・W・# の拡張記法には非対応です。それらを使う環境では、実行環境の公式ドキュメントもあわせて確認してください。書いた式に迷ったら、まずここで意味と次回実行を確かめるのが確実です。