Cron 式

Linux、Spring、Quartz の cron を読み下すか、フィールドから組み立て、このパソコンのローカル時刻で次の 10 回を出します。 Crontab を作る

Crontab を作る

各フィールド

この予定はいつ動くか

Linux Crontab(5 桁)、Spring @Scheduled(6 桁、秒が先頭)、Quartz(6 桁、年を足して 7 桁)から選びます。各フィールドを読み下し、このパソコンの時計で次の 10 回を出します。ジョブは登録しません。時刻や @daily から作りたいときは Cron 式ジェネレーター を使います。タイムスタンプは Unix タイムスタンプ です。

使い方

  1. 形式は Linux Crontab(5桁)、Spring @Scheduled(6桁)、Quartz(6–7桁)です。メニューの下の行に、並びと日曜の数字が出ます。
  2. 式を書くか、定型を開くか、「各フィールド」の行を変えます。定型は毎分、毎時、毎日 0 時、毎週日曜 0 時、平日 9–17 時、15 分ごと、毎月 1 日 0 時です。入力欄の下のボタンは、今の形式でこの一覧を入れます。ほかに毎日 02:00、土日 09:00、5分から15分ごと、2時間ごとの30分、毎年 1月1日もあります。Spring と Quartz には毎月最終日 23:00、15日に一番近い平日、第1月曜 10:15、最終金曜 10:15 もあります。Quartz には 2030年1月1日もあります。ボタンの隣のリンクは Cron 式ジェネレーターを開きます。各行は毎、範囲、間隔、指定です。「指定」のときだけ値が並びます。秒と分は 0–59、時は 0–23、日は 1–31、月は 1–12、曜日は SUN–SAT。Spring と Quartz には指定しない(?)、月末(L)、最後の平日(LW)、いちばん近い平日(W)、第n曜日(#)、最後の曜日(nL)もあります。フィールドを変えると式が書き換わります。行で表せないフィールドはカスタムのまま、文字を残します。
  3. 「入力と同時に更新」はオンです。「説明する」は一度だけ実行します。「例を表示」は今の形式の平日の例を入れます。Linux は */15 9-17 * * 1-5、Spring は 0 */15 9-17 * * MON-FRI、Quartz は 0 */15 9-17 ? * MON-FRI。
  4. 結果は各フィールドのあと、「次の 10 回」です。「すべてクリア」は式と結果を空にし、各フィールドを毎に戻します。「結果をコピー」はその文字をコピーします。形式を替えると秒を足すか外し、Linux では ? を * にし、曜日の数字を SUN–SAT に書き換えて同じ曜日を保ちます。

どの日が当たるか

Linux は分、時、日、月、曜日です。日曜は 0、7 または SUN。月曜は 1。?、L、W、# はありません。日と曜日の両方を限ったときは、どちらかの一致で足ります。結果にもそう出ます。

Spring は先頭に秒を足します。日曜の番号は Linux と同じです。? はそのフィールドを見ません。L は月末。15W は 15 日にいちばん近い平日で、月を越えません。LW は最後の平日。MON#1 は最初の月曜。6L は最後の土曜です。ここでは 6 が土曜です。

Quartz も同じ 6 フィールドで、年は 2024-2030 のように足せます。日曜は 1 または SUN。月曜は 2。土曜は 7。6L は最後の金曜です。日か曜日のどちらかを ? にします。毎日 2:00 は 0 0 2 * * ?。両方に具体値があるときは、どちらかが一致すれば実行し、警告を出します。SUN–SAT と JAN–DEC は大文字小文字を問わず、三つの形式で同じ日、同じ月です。

ハイフンは範囲、カンマは列挙、スラッシュは間隔です。*/15 はそのフィールドの先頭から 15 ごと。5/15 は 5 から終わりまで 15 ごとなので、分は 5、20、35、50 です。時刻はローカルで、UTC ではありません。秒があるときは秒ごとに、なければ分ごとに進めます。

使う場面

  • crontab に入れる前に 0 2 * * * を確認する。
  • Spring で毎日 2:00 を 0 0 2 * * * と書く。
  • Quartz の 0 15 10 ? * 6L(毎月最後の金曜 10:15)や 0 0 23 L * ?(毎月最終日 23:00)を確認する。

質問

2:00 は Linux が 5 桁で Spring が 6 桁なのはなぜですか。

Linux に秒はありません。2:00 は 0 2 * * * です。Spring と Quartz は秒が先頭なので、同じ時刻は 0 0 2 * * *、Quartz ではよく 0 0 2 * * ? と書きます。

疑問符は何ですか。

そのフィールドを指定しない印です。Quartz では日か曜日の一方を ? にします。0 0 2 * * ? は毎日 2:00 です。

1 は日曜ですか。

Linux と Spring では 1 が月曜、日曜は 0 か 7 です。Quartz では 1 が日曜、2 が月曜です。SUN は三つとも日曜です。

時計が UTC と合いません。

次の 10 回は、このパソコンのローカルタイムゾーンです。