本文へスキップ

cron式の読み解き

Cron Parser

cron式を普通の言葉に開いて説明し、選んだタイムゾーンでの次の実行時刻を並べます。

cron式を読んで、いつ実行されるのかを普通の言葉で述べ、選んだタイムゾーンでの次の実行を並べます。5つのフィールドでも、秒を含む6つでも、`@daily`の仲間でも、月末を表す`L`でも、第3金曜を表す`5#3`でも構いません。

🔒 ブラウザの中だけで動きますcronscheduleparse

式

欄は五つ、または先頭に秒を足した六つです。`@daily` や `@hourly` などの表記も使えます。

言葉にすると

月曜日から金曜日まで9時から17時まで15分ごとに実行します。

欄ごとに見る

cron の欄ごとに1行。
欄値意味
分0-5915分ごと`*/15` は15分ごと、`15` は毎時15分です。
時0-239時から17時まで常に24時間制で、スケジューラーが別に定めないかぎりサーバーのタイムゾーンです。
日1-31毎日`L` は最終日です。31 は日数の少ない月にはそのまま実行されません。
月1-12 または JAN-DEC毎月名前は大文字小文字を区別しません。
曜日0-7 または SUN-SAT月曜日から金曜日まで0 も 7 も日曜です。`5#3` は第3金曜、`5L` は最後の金曜です。

次の実行

件数
この予定は今後5年のあいだ一度も実行されません。2月30日のような日付は巡ってきません。

タイムゾーン

UTC

ブラウザではなく、上で選んだタイムゾーンで計算します。夏時間が飛ばす壁時計の時刻は、ここでも飛ばします。

使い方

  1. 式を貼り付けます

    1文で説明し、フィールドごとに範囲と、その値がそのフィールドにとって何を意味するのかを分けて示します。

  2. タイムゾーンを設定します

    cronを確かめる目的は、まさにここにあります。スケジューラはサーバーのタイムゾーンで動きますが、それはたいていUTCで、自分のものであることはめったにありません。次の実行の一覧は、ブラウザのタイムゾーンではなく、選んだタイムゾーンで計算します。

  3. 次の実行を読みます

    曜日と、それぞれの間隔とともに出ます。1日空くはずのところで実行が1時間しか離れていなければ、フィールドの置き場所を間違えたことに、いちばん早く気づけます。

よくある質問

`0 0 * * 1`が1日に実行されないのはなぜですか

5つ目のフィールドは曜日であって、日ではないからです。`1`は月曜日です。日は3つ目のフィールドです。5つ目では`0`も`7`も日曜日を意味します。

夏時間の切り替えのあいだ、ジョブはどうなりますか

時計が飛ばす壁時計の時刻は存在しないので、この一覧もそれを飛ばします。繰り返される時刻は、スケジューラによっては2回実行されることがあります。夏時間のあるタイムゾーンで`0 2 * * *`が選んではいけない時刻である理由が、それです。

日と曜日はANDで組み合わさりますか、それともORですか

どちらも制限されているときはORです。Vixie cronの癖で、直そうとするあらゆる試みより長く生き延びてきました。`0 0 1 * 1`は、1日*と*毎週月曜に実行されるのであって、1日にあたる月曜に実行されるのではありません。ここの説明は、当てはまるときにそれを明示します。

どのスケジューラでも`L`と`#`は使えますか

使えません。Quartzの拡張で、Quartz、Spring、いくつかのクラウドのスケジューラでは使えますが、素のUnixのcronにはありません。秒のフィールドも同じ話です。どちらかに頼る前に、使っているスケジューラを確かめてください。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。