Cron 式の読み方
Unix の標準的な Cron 式は、スペースで区切られた 5 つのフィールドで構成されます。分(0–59)、時(0–23)、日(1–31)、月(1–12)、曜日(0–6、0 と 7 は日曜日)です。現在時刻がすべてのフィールドに一致したときにジョブが実行されます。アスタリスクは「任意の値」を意味するので、* * * * * は毎分実行されます。
1 つのフィールド内では値を組み合わせられます。カンマはリスト(1,15)、ハイフンは範囲(9-17)、スラッシュはステップ(*/10 は 10 単位ごと)を表します。多くの実装では JAN や MON といった英語の略称も使えます。
方言が重要な理由
すべてのスケジューラーが同じ Cron を話すわけではありません。Quartz と Spring は先頭に秒フィールドを追加し、AWS EventBridge は末尾に年フィールドを追加します。また Quartz と AWS は曜日を 0 ではなく 1 = 日曜日から数えます。さらに Quartz と AWS では、日または曜日のどちらかに疑問符が必須です。CronExplain は式の形から方言を自動判定し、いつでも手動で切り替えられます。
次回実行時刻とタイムゾーン
実行時刻の一覧は、選択したタイムゾーンの壁時計時刻で計算され、あなたの現地時刻と並べて表示されます。夏時間は多くのスケジューラーと同じように扱います。時計が進むときにスキップされる時刻はその日は実行されず、時計が戻るときに繰り返される時刻は 1 回だけ実行されます。GitHub Actions と AWS EventBridge のルールは常に UTC を使うため、これらの方言ではツールが自動的に UTC に切り替わります。
ビジュアルに式を作成
入力よりクリックで作りたい場合はビジュアルビルダーを使いましょう。各フィールドで「毎」「N ごと」「指定」を選び、結果をコピーするだけです。プリセットは 5 分ごとから毎月 1 日まで、よく使うスケジュールを網羅しています。結果は式を URL に保持したリンクで共有できます。
よくある質問
- */5 * * * * はどういう意味ですか?
- 5 分ごとに実行されます。毎日、毎時 0 分、5 分、10 分…に実行されます。*/5 はそのフィールドの最小値(0)から始まり、5 ずつ加算されます。
- Cron で日曜日は 0 ですか、7 ですか?
- 標準 crontab、Kubernetes、GitHub Actions、Spring では 0 と 7 のどちらも日曜日です。Quartz と AWS EventBridge では 1 = 日曜日〜7 = 土曜日なので、0 は無効です。
- 日と曜日の両方を指定するとどうなりますか?
- 標準の Cron では、どちらか一方が一致すれば実行されます。そのため 0 0 13 * 5 は毎月 13 日と毎週金曜日に実行されます。Quartz と AWS では両方を指定できないため、一方を「?」にする必要があります。
- Cron はどのタイムゾーンを使いますか?
- crontab はサーバーのローカルタイムゾーン、Kubernetes は spec.timeZone を設定しない限りコントローラーのタイムゾーン、GitHub Actions と EventBridge ルールは UTC を使います。ツールでタイムゾーンを選ぶと正確な実行時刻を確認できます。
- 入力した式はサーバーに送信されますか?
- いいえ。解析、説明文の生成、実行時刻の計算はすべてブラウザ内で行われます。入力内容が端末の外に出ることはありません。