cron式は、Linux cron・GitHub Actions・Kubernetes CronJob・AWS EventBridge・その他多数のスケジューラでジョブの実行タイミングを制御します。構文はコンパクトですが直感的ではありません——0 9 * * 1-5 は参考資料なしでは一瞬読み解けません。オンラインパーサーがcron式を即座に平易な言葉で説明します。

cron式をパースして検証 →

cron式の構造

標準的なcron式はスペースで区切られた5つのフィールドを持ちます:

┌───────────── 分 (0–59)
│ ┌───────────── 時 (0–23)
│ │ ┌───────────── 日 (1–31)
│ │ │ ┌───────────── 月 (1–12)
│ │ │ │ ┌───────────── 曜日 (0–7、0と7は日曜日)
│ │ │ │ │
* * * * *

一部のシステム(Quartz・Spring・AWS Lambda)では秒や年を含む6フィールドまたは7フィールド形式を使用します。パーサーは両方のバリアントに対応しています。

特殊文字

文字意味
*すべて / 毎* * * * * — 毎分
,リスト1,15 * * * * — 1分と15分に実行
-範囲1-5 * * * * — 1分から5分
/ステップ*/15 * * * * — 15分ごと
L最後0 0 L * * — 月末(非標準)
#第n曜日0 10 * * 1#2 — 第2月曜日(非標準)
?値なし曜日または日フィールドで使用(Quartz)

よく使うcron式20選

N分ごと

# 毎分
* * * * *

# 5分ごと
*/5 * * * *

# 15分ごと
*/15 * * * *

# 30分ごと
*/30 * * * *

毎時・毎日

# 毎時0分
0 * * * *

# 毎日0時(UTC)
0 0 * * *

# 毎日9時(UTC)
0 9 * * *

# 1日2回 — 8時と20時
0 8,20 * * *

平日スケジュール

# 平日9時
0 9 * * 1-5

# 毎週月曜9時
0 9 * * 1

# 月・水・金の12時
0 12 * * 1,3,5

# 週末10時
0 10 * * 0,6

月次・四半期

# 毎月1日の0時
0 0 1 * *

# 毎月1日と15日の0時
0 0 1,15 * *

# 各四半期の第1日(1月・4月・7月・10月)
0 0 1 1,4,7,10 *

特定の時刻

# 元日0時
0 0 1 1 *

# 毎週日曜4時(メンテナンス時間)
0 4 * * 0

# 6時間ごと
0 */6 * * *

プラットフォーム別の注意点

Linux crontab

標準5フィールド構文。crontab -e で編集します。タイムゾーンはシステムタイムゾーンです。

# 現在のcrontabを確認
crontab -l

# crontabを編集
crontab -e

GitHub Actions

UTC表記の5フィールド形式。負荷が高い場合、ジョブは数分遅れることがあります:

on:
  schedule:
    - cron: '0 9 * * 1-5'  # 平日9時(UTC)

日本時間(JST)に換算するには9時間引いてください(例:JST 18時 = UTC 9時)。

AWS EventBridge / CloudWatch Events

最初のフィールドが秒の6フィールド形式、または個別の「レート式」を使用します:

cron(0 9 ? * MON-FRI *)
rate(5 minutes)

? は日または曜日フィールドのどちらかにのみ必要です(両方ではありません)。

Kubernetes CronJob

標準5フィールド構文。タイムゾーンフィールド(spec.timeZone)はKubernetes 1.27+で利用可能です:

spec:
  schedule: "0 9 * * 1-5"
  timeZone: "Asia/Tokyo"

cron式を素早く読む

このパターンに慣れてください:

  • 先頭の 0 + 時フィールド = “その時の0分”
  • フィールドの * = そのフィールドの”すべての単位”
  • */n = “n単位ごと”
  • - で区切られた2つの数値 = 範囲
  • , で区切られた数値 = 特定の値のリスト

つまり 0 9 * * 1-5 は:0分、9時、任意の日、任意の月、平日 → 毎平日9:00

cronの問題デバッグ

ジョブが実行されなかった場合チェックすること:

  1. cronデーモンは起動しているか?(systemctl status cron
  2. スクリプトは実行可能か?(chmod +x script.sh
  3. スクリプトで絶対パスを使っているか?(cronは $PATH が最小限)
  4. crontabを保存したか?(crontab -l で確認)
  5. ログを確認:/var/log/syslog または /var/log/cron

出力が消えた場合:cronはデフォルトで出力をメールで送信します。ログファイルにリダイレクトしてください:

0 9 * * * /path/to/script.sh >> /var/log/myjob.log 2>&1

タイムゾーンの混乱:cronはシステムタイムゾーンで実行されます。明示的な制御には、crontabに TZ を設定してください:

TZ=Asia/Tokyo
0 9 * * 1-5 /path/to/script.sh

本番環境に適用する前にスケジュールを検証しましょう。cron式パーサーを試す →