ToolConvoyToolConvoyv2.6

cron 式とは?

cron 式は Unix 系スケジューラにジョブ実行タイミングを伝える 5 フィールドの文字列です。各フィールド、曜日の落とし穴、他人の crontab の読み方を整理します。

広告

cron 式とは?

cron 式は、Unix 系スケジューラ(cron、cronie、systemd タイマーの cron 互換モード、Spring Scheduler、Quartz 標準モード、GitHub Actions schedule、Kubernetes CronJob)に対し、いつジョブを実行するかを伝える 5 フィールドの文字列です。例:

*/15 9-17 * * 1-5

空白区切りの 5 フィールド。各フィールドは時間の異なる単位への制約で、5 つの制約が同じ瞬間にすべて満たされたとき式が一致して発火します。

5 つのフィールド

左から順に:

# フィールド 許容値 特殊文字
1 分 0-59 * , - /
2 時 0-23 * , - /
3 日 1-31 * , - / ? L W
4 月 1-12(または JAN-DEC) * , - /
5 曜日 0-7(0 と 7 は日曜、または SUN-SAT) * , - / ? L #

* は「すべての値」——毎分、毎時、毎日。

*/15 9-17 * * 1-5 の意味

  • */15 — 0、15、30、45 分に発火(0 から 15 分刻み)。
  • 9-17 — 9 時から 17 時(含む)。
  • * * — 任意の日、任意の月。
  • 1-5 — 月曜日から金曜日。

合計:月曜から金曜の 09:00、09:15、09:30、09:45、10:00 … 17:45。

よく使う特殊文字 3 つ

  • , — リスト。1,15,45 は 1 分、15 分、45 分。
  • - — 範囲。9-17 は 9 時から 17 時(含む)。
  • / — ステップ。*/15 は「15 ごと」。範囲と組み合わせて 1-30/5(「1 から 30 まで 5 ごと」)も可。

曜日の落とし穴

POSIX cron では 0 と 7 は両方とも日曜。多くの現代的実装は英語の曜日名(SUN、MON など)も受け付けますが、拡張構文は実装ごとに差があります。Quartz と Spring は L(last)、W(weekday)、#(nth)を追加しますが、標準 cron にはありません。システムを跨いで動かすなら、5 フィールドの POSIX 方言に絞ってください。

日 AND 曜日

日と曜日の両方が * でないとき、cron は AND ではなく OR と扱います。つまり 0 0 1 * 1 は「毎月 1 日 OR 任意の月曜」の深夜 0 時であって、「毎月第 1 月曜」ではありません。「第 1 月曜」を表現するには Quartz の # 拡張(0 0 * * 1#1)が必要です。

ツール

ブラウザで動く cron エディタ — 直近 5 回の発火を表示し、各フィールドを検証 — は本サイトの Cron Generator をどうぞ。完全クライアントサイド、登録不要。

サイト全体の「時間、スケジュール、日付計算」まとめは Time and Cron hub を参照。

関連

Related tools

Related hubs

広告