piapia123
ja

Cron 式の解析と実行時刻の予測

変換・計算

処理はすべてブラウザ内で完結します。データは送信されません

入力
出力

「*/15 9-17 * * 1-5」のような式を日本語に翻訳します。まず各フィールドが何を書いているかを1つずつ説明し、次に一文の要約を出し、最後に次にいつ実行されるかを並べます。実行時刻は「次に一致しうる時刻へ飛ぶ」方式で求めるので、1分ずつ試すことはなく、2月29日を指定した場合でもすぐ結果が出ます。絶対に実行されない式(2月31日など)を書いた場合は、ページが回り続けるのではなく理由をその場で示します。

機能

  • 5 通りの書き方すべてに対応:アスタリスク、単一値、範囲 a-b、リスト a,b,c、ステップ(アスタリスクや範囲の後ろに /n)
  • 月と曜日は JAN-DEC、SUN-SAT の名前でも書けます
  • フィールドごとの説明 + 一文の要約(例:「毎週月曜〜金曜の 9 時から 17 時まで 15 分ごと」)
  • 次に実行される時刻を 1〜50 件表示し、曜日も添えます
  • 「日」と「曜日」の両方を指定したときの「または」の関係を正しく処理(Vixie cron の意味論)
  • @daily、@hourly、@weekly、@monthly、@yearly などのマクロに対応
  • 絶対に実行されない式はその場で判定し、どのフィールドの組み合わせが不可能なのかを示します
  • 実行時刻はローカルタイムゾーンでも UTC でも表示できます(サーバーの cron は UTC が多いため)

使い方

  1. 5 フィールドの cron 式を入力欄に貼り付けます
  2. 説明の言語、表示件数、どのタイムゾーンで表示するかを選びます
  3. 「実行」を押します(Ctrl/⌘ + Enter でも可)
  4. 結果をコピーするか、説明に従って式を直します

よくある質問

6 フィールドの式が拒否されるのはなぜですか?
先頭に「秒」を足すのは Quartz や Spring の書き方で、古典的な cron は 5 フィールドです。6 フィールドの式を 5 フィールドとして読むと、どのフィールドも1つずつずれて、計算される実行時刻は意図とまったく別物になります。そのためここでは無理に解析せず、秒の欄を消すよう促して拒否します。
「日」と「曜日」を両方書くとどうなりますか?
古典的な cron(Vixie)の規則は「または」です。「0 0 1 * 1」は毎月1日、または毎週月曜に実行する意味になります。どちらかがアスタリスクのときにだけ「かつ」に変わります。この規則は実装によって間違えやすく、このツールは Vixie の意味論どおり、両方が限定されているときは「または」として扱います。
実行時刻はどのタイムゾーンで計算しますか?
切り替えられ、既定はローカルタイムゾーンです。コンテナやサーバーの cron は UTC で動くことが多く、手元で確認するときはローカルのほうが分かりやすいので、両方を用意しています。切り替えると一覧の時刻がまとめてずれ、曜日もそれに従って変わります。
「絶対に実行されない」と出るのはなぜですか?
たとえば「0 0 31 2 *」です:2月に31日はないので、どの年でも実行されません。このツールは「日」と「月」の組み合わせがどの年にも存在しないかを調べます。あわせて探索の上限を4年に取っています(うるう年の最長間隔は8年に達することがあります)。上限を超えた場合は、見つかるまで回し続けるのではなく、見つからないと正直に報告します。

関連ツール