cron式 チェッカー — 意味の確認と次回の実行日時
5/6フィールド対応のcron式解説、次の5回の実行日時、タイムゾーン指定
ブラウザー内で処理・アップロード不要
5フィールド形式:分 時 日 月 曜日 · 6フィールド形式:秒 分 時 日 月 曜日
5 分ごと
わかりやすく言うと
5 分ごと
次の5回の実行日時
cron式 チェッカーとは
*/5 * * * *のような短いcron式は、数か月前に自分で書いたものでも意味がわかりにくいものです。ここに入力すると、その意味を文章で説明し、実際に実行される次の5回の日時を、選んだタイムゾーンで計算します。説明文はオープンソースのcronstrueライブラリーで生成しています。
使い方
- cron式を入力するか、例のボタンを押します。5フィールドの形式と、秒付きの6フィールドの形式のどちらも使えます。
- 「わかりやすく言うと」の欄で意味を確認します。
- タイムゾーンを選ぶと、次の5回の実行日時がそのタイムゾーンで計算し直されます。初期設定はブラウザーのタイムゾーンです。
@dailyのような別名を使った場合は、それが表す標準の式が横に表示されます。
仕組み
- フィールドの順番:5フィールドは分(0〜59)・時(0〜23)・日(1〜31)・月(1〜12)・曜日(0〜7)で、6フィールドは先頭に秒(0〜59)が付きます。曜日は0と7がどちらも日曜日、1が月曜日です(Unixのcron・Spring)。1が日曜日になるQuartzとは異なります。
- 各フィールドには
*、数字、範囲a-b、リストa,b、間隔*/n・a-b/n・a/nが使えます。月と曜日にはJANやMONのような英語の略称も使えます。日と曜日の?は*と同じ扱いです。 - 別名:
@yearly(0 0 1 1 *)、@monthly(0 0 1 * *)、@weekly(0 0 * * 0)、@daily(0 0 * * *)、@hourly(0 * * * *) - 日と曜日のどちらも
*でない場合は、どちらか一方が一致すれば実行されます。 - 次回の実行日時は、選択したタイムゾーンの時計をフィールドごとにたどって求め、最大8年先まで探します。2月30日のように決して来ない日付の場合は、代わりにメッセージを表示します。
- 式が正しくない場合は、どのフィールドのどの値に問題があるかを示します。
例
| 式 | 意味 |
|---|---|
*/5 * * * * |
5分ごと |
0 9 * * 1-5 |
平日の9:00 |
0 0 9 * * 1-5 |
6フィールド:平日の9:00:00 |
30 2 1 * * |
毎月1日の2:30 |
補足
- サーバーがブラウザーと別のタイムゾーンで動いている場合は実際の実行時刻も変わるので、確認するときはサーバーのタイムゾーンを選んでください。
- 毎分・毎秒のように頻度の高い式では、次の5回は単純に連続した時刻になります。
よくある質問
5フィールドと6フィールドの違いは何ですか?
5フィールドは「分 時 日 月 曜日」、6フィールドは先頭に秒が付いて「秒 分 時 日 月 曜日」になります。Linuxのcrontabは5フィールド、Springの@Scheduledは6フィールドを使います。このツールはフィールドの数で見分けます。曜日の番号はUnixのcronやSpringと同じで、0と7が日曜日、1が月曜日です。Quartzは1が日曜日〜7が土曜日なので、?と数字の曜日を使った6フィールドの式には警告を表示します。
Quartzの式も読めますか?
MONやFRIのように曜日を名前で書いた6フィールドの式は、そのまま読めます。数字の曜日は番号の付け方が違う(Quartzは1が日曜日、このツールは0と7が日曜日で1が月曜日)ため、1日ずれてしまいます。名前で書くか、1を引いてください。?も受け付けるSpring向けの式であれば、警告は気にしなくて大丈夫です。末尾に年が付く7フィールドの形式や、L、W、#の記法には対応していません。
日と曜日の両方を指定するとどうなりますか?
従来のcronの規則に従い、どちらか一方が一致すれば実行されます。たとえば0 0 13 * 5は、毎月13日または毎週金曜日の0時という意味です。どちらかが*なら、もう一方だけが条件になります。
夏時間の切り替えはどう扱われますか?
選択したタイムゾーンの時計どおりに計算します。春に時計が進んで飛ばされる時刻は、その日は実行されません。2回現れる時刻は、最初の1回だけ実行します。実際のスケジューラーは実装によって動きが異なる場合があります。
L、W、#などの拡張記法には対応していますか?
いいえ。数字、範囲(-)、リスト(,)、間隔(/)、*と?、月と曜日の英語略称(JAN、MON)、別名の@hourly、@daily、@weekly、@monthly、@yearlyに対応しています。それ以外はエラーとして表示します。