Cron式の読み方と理解方法

17 Jun 2026 703 words

Cron式の読み方と理解方法

cron式は、繰り返しスケジュールを記述する5つまたは6つのフィールドからなる文字列です。パターンを覚えれば、任意のcron式を平易な英語のように読めるようになります。このガイドでは、単純な* * * * *から範囲、ステップ、特殊文字を含む複雑な式まで、すべてのcron構文要素の解読方法を教えます。

Cronの5つのフィールド

すべてのcron式には、コマンドに続く5つの時間フィールドがあります:

┌───────── 分 (0-59)
│ ┌──────── 時 (0-23)
│ │ ┌─────── 日 (1-31)
│ │ │ ┌────── 月 (1-12)
│ │ │ │ ┌───── 曜日 (0-7, 0と7は日曜)
│ │ │ │ │
* * * * * <command>

左から右に読みます:「何分に、何時に、月の何日に、何月に、何曜日に?」

式をステップごとに読む

単純な例

0 9 * * *

読み方:「0分、9時、毎日、毎月、毎曜日」→ 毎日午前9時に実行。

*/15 * * * *

読み方:「毎時15分ごと、毎日」→ 15分ごとに実行。

30 8 * * 1-5

読み方:「30分、8時、毎日、毎月、月曜から金曜」→ 平日の午前8時30分に実行。

0 0 1 * *

読み方:「毎月1日の深夜0時」→ 月次実行。

複雑な例

0 9-17/2 * * 1-5

分解:

  • 0 — 0分
  • 9-17/2 — 9時から17時まで2時間ごと(つまり9、11、13、15、17時)
  • * — 毎日
  • * — 毎月
  • 1-5 — 月曜から金曜

→ 平日の9:00、11:00、13:00、15:00、17:00に実行。

30 6 1,15 * 0

分解:

  • 30 — 30分
  • 6 — 6時
  • 1,15 — 月の1日と15日
  • * — 毎月
  • 0 — 日曜のみ

→ 月の1日と15日の午前6時30分に実行。ただし、その日が日曜の場合のみ。

特殊文字リファレンス

* — 毎/すべて

そのフィールドの任意の値にマッチします。

0 * * * *     → "毎時"
* * * * *     → "毎分"

, — リスト/または

複数の値を区切ります。

0 9,12,15 * * *     → "午前9時、正午、午後3時"

- — 範囲

値の包括的な範囲を定義します。

0 9-17 * * *        → "午前9時から午後5時まで毎時"
30 8 * * 1-5        → "平日の午前8時30分"

/ — ステップ

フィールドを増分に分割します。

*/15 * * * *        → "15分ごと"
0 */2 * * *         → "2時間ごと"
0 0 */3 * *        → "3日ごと"

ステップは範囲と組み合わせることができます:

0 9-17/2 * * *     → "午前9時から午後5時まで2時間ごと"
30 */4 * * 1-5     → "平日に4時間ごと、30分に"

L — 最終(一部のシステム)

一部のcron実装(Quartzなど)では、Lは「最終」を意味します。

0 0 L * *          → "毎月最終日"

# — N番目(一部のシステム)

0 9 * * 1#1        → "毎月最初の月曜日午前9時"

一般的な式の解読

人間が読める形式 説明
* * * * * 毎分
*/5 * * * * 5分ごと
0 * * * * 毎時0分 毎時
0 */2 * * * 2時間ごと
0 9 * * * 毎日午前9時 日次
0 9,17 * * * 毎日午前9時と午後5時
0 9 * * 1-5 平日午前9時
30 8 * * 1 月曜日午前8時30分
0 0 1 * * 毎月1日 月次
0 0 1 1 * 1月1日午前0時 年次
*/15 9-17 * * 1-5 平日の営業時間中15分ごと
0 0 * * 0 毎週日曜日午前0時 週次
0 0 */2 * * 2日ごと午前0時
0 22 * * 5 毎週金曜日午後10時

6フィールドCron(秒を含む)

一部のcron実装(Quartz Schedulerなど)は6フィールドを使用し、先頭に秒を追加します:

┌───────── 秒 (0-59)
│ ┌──────── 分 (0-59)
│ │ ┌─────── 時 (0-23)
│ │ │ ┌────── 日 (1-31)
│ │ │ │ ┌───── 月 (1-12)
│ │ │ │ │ ┌──── 曜日 (0-7)
│ │ │ │ │ │
* * * * * * <command>
0 */5 * * * *     → "0秒に、5分ごと"
0 0 9 * * *       → "毎日午前9時00分00秒"

非標準の省略形

多くのcron実装は以下のエイリアスをサポートしています:

@yearly   → 0 0 1 1 *     → "年1回"
@monthly  → 0 0 1 * *     → "月1回"
@weekly   → 0 0 * * 0     → "週1回"
@daily    → 0 0 * * *     → "日1回"
@hourly   → 0 * * * *     → "1時間に1回"
@reboot   → (時間ではない)   → "起動時に実行"

Cronを人間が読める形式に変換する

見慣れないcron式を見たときは、フィールドごとに解読します:

式: 45 17 1,15 * 1-5
フィールド 意味
45 45分
17 午後5時
1,15 1日と15日
* 毎月
曜日 1-5 月曜から金曜

結果: 「毎月1日と15日の午後5時45分、ただし平日の場合のみ」

式: 0 0 * * 0
フィールド 意味
0 0分(深夜)
0 0時(深夜)
* 毎日
* 毎月
曜日 0 日曜

結果: 「毎週日曜日の午前0時」

Cron読み取りの一般的な落とし穴

落とし穴1:曜日と日の両方が*の場合、両方がマッチする

曜日の両方が*の場合、式は任意の日に実行されます。ただし、両方に特定の値がある場合、ジョブはいずれかがマッチすれば実行されます — OR条件です。

0 9 15 * 1

これは、月の15日の午前9時と、毎週月曜日に実行されます(「15日かつ月曜日」ではありません)。両方がマッチする場合のみ実行するには、2つの別々のcrontabエントリかスクリプトレベルのロジックが必要です。

落とし穴2:Cronはローカル時間を使用し、UTCではない

Cronはシステムのローカル時間を使用します。UTCに設定されたサーバーでは、0 9 * * *はUTCの午前9時に実行されます。スケジュールを設定する前に、必ずサーバーのタイムゾーンを確認してください。

落とし穴3:0と7はどちらも日曜日

曜日フィールドでは、07の両方が日曜日を表します。これは初期のUnix実装からのレガシーです。

オンラインツール

Help2CodeのCron式パーサーツールは、任意のcron式を人間が読める説明にデコードします。*/15 9-17 * * 1-5のような式を貼り付けると、フィールドごとの分解、次回実行時刻、平易な英語での説明が表示されます。Cronジョブコマンドジェネレーターツールで新しい式を構築できます。

結論

cron式を読むスキルは、練習すれば自然に身につきます。5つのフィールド(分、時、日、月、曜日)を覚えてください。「毎」にはワイルドカード*、範囲には-、間隔には/、特定の値にはリストの,を使用します。見慣れない式はフィールドごとに解読し、Cron式パーサーツールを使用して理解を確認してください。


About this article

cron式の読み方と理解方法を学びます。式パーサーを使用して任意のcrontabスケジュールを解読し、特殊文字、範囲、ステップをマスターします。


Related Articles


Related Tools

Help2Code Logo
Menu