開発者 🔒 ブラウザ内で動作 — データは送信されません

cron式チェッカー(読み解き・次回実行時刻)

どんなcron式もわかりやすい言葉で1フィールドずつ読み解き、次にいつ実行されるかを正確に確認できます。

次回の実行

    cron式チェッカー — crontabの1行が本当に意味すること

    cron式を貼り付けると、わかりやすい文として読めるうえ、5つのフィールドを1つずつ確認でき、次回の実行時刻を自分のタイムゾーンかUTCで確かめられます。範囲外の値、Quartzからコピーした6フィールドの式、2月31日のように決して訪れないスケジュールなど、ジョブが違う時刻に実行される原因になる誤りを見つけます。

    cronはLinuxやmacOSのcrontabを動かすスケジューラーで、その構文はKubernetesのCronJob、GitHub Actions、GitLab CI、多くのクラウドのスケジューラーでも使われています。構文は簡潔なぶん読み違えやすく、ここで確認しておけば、1日1回のはずのジョブが毎分実行される事態を防げます。

    使い方

    1. cron式を入力するか貼り付けます。よく使うスケジュールから選ぶこともできます。
    2. 説明と、その下の5つのフィールドを読みます。
    3. 次回の実行の一覧を確認します。タイムゾーンはこの端末とUTCで切り替えられます。
    4. フィールドが赤枠で示されたら、その上のメッセージに問題点が表示されます。

    5つのフィールド

    フィールド使える値例意味
    分0–593030分に
    時0–239-1709:00から17:59まで
    日1–311,151日と15日に
    月1–12またはJAN–DEC*/31月、4月、7月、10月
    曜日0–6またはSUN–SAT(7も日曜日)1-5月曜日から金曜日

    特殊文字

    • *はそのフィールドのすべての値を表します。
    • ,はリストを区切ります:1,15,30。
    • -は範囲を表します:9-17。
    • /はステップを表します:*/15は最小値から15ごと、5/15は5から15ごとです。
    • マクロは1行全体の代わりになります:@hourly、@daily、@weekly、@monthly、@yearly。

    日と曜日の落とし穴

    日と曜日の両方のフィールドを絞り込むと、標準のcronは両方ではなく、どちらか一方に一致する日にジョブを実行します。0 0 1 * 1は、毎月1日の0時に加えて、毎週月曜日にも実行されます。多くの人は「1日が月曜日にあたる日」を期待しますが、素のcronではそれを表現できません。このツールは両方のフィールドが指定されていると注意を表示し、次回の実行の一覧を見れば実際の動作が一目でわかります。

    タイムゾーン

    cronは、それを実行するマシンやサービスのタイムゾーンを使います。サーバーやGitHub ActionsのようなクラウドのスケジューラーはたいていUTCで動くため、09:00のつもりで書いたジョブが09:00 UTCに実行されることがあります。これはほとんどの地域で別の時刻です。さらに、住んでいる地域で夏時間が始まったり終わったりすると、1時間ずれます。デプロイする前に、この端末とUTCで次回の実行を比べて、違いを確かめてください。

    このツールが対応していないもの

    • 秒:QuartzやSpringの6~7フィールドの式は、誤って解釈せずにその旨を表示します。
    • 一部のスケジューラーが追加しているL、W、#のような非標準の拡張。
    • 起動時に1回だけ実行され、次回の時刻を持たない@reboot。

    関連ツール

    実行時刻をUnixタイムスタンプに、またはその逆に変換するには、タイムスタンプ変換ツールを使ってください。タスクページでは、このツールをよく使うスケジュールで開けます:5分ごと、1時間ごと、毎日0時。