コンテンツにスキップ

Cron 式パーサー

Cron 式を貼ると自然言語の説明 + 次の 10 回の実行時刻 + フィールドごとの意味を表示。よく使う例のテンプレートも。

完全無料 登録不要 ブラウザ完結 5 言語対応 ダークモード

    📖 Cron 式の書き方

    📖 つまずきやすいポイント

    Cron 式を貼ると、自然言語の説明と次の 10 回の実行時刻を計算します。計算に使うのはあなたのブラウザのタイムゾーンで、実際にジョブが動くサーバーのタイムゾーンではありません。また、式が正しいこととジョブが実際に動くことは別問題です。cron デーモンが起動しているか、実行ユーザーの権限とパスが通っているかまでは、ここでは分かりません。

    ケース 何が起きるか どうする
    日と曜日を両方指定した この 2 つをどちらも * 以外にすると、AND ではなく OR で解釈されます0 0 1 * 1 は「毎月 1 日 かつ 月曜」ではなく「毎月 1 日 または 毎週月曜」で、月に 5 回前後動きます。Vixie cron 由来のこの挙動は直感に反するため、事故の定番です。 どちらか一方を必ず * にします。「毎月 1 日が月曜のときだけ」のような AND が必要なら、cron は毎日起動しておき、スクリプトの先頭で日付を判定して早期 return するのが確実です。
    分以外のフィールドで */n を使った */n は「n で割り切れる値」であって「n ごと」ではありません。0 */5 * * * は 0, 5, 10, 15, 20 時に動き、20 時の次は翌 0 時なので、そこだけ 4 時間空きます。24 が 5 で割り切れないためです。日 (1〜31) でも月末で同じことが起きます。 等間隔にしたいなら値を明示的に列挙します。6 時間おきなら 0 0,6,12,18 * * *。分なら 60 が 5・10・15・20・30 で割り切れるので */5 は素直に等間隔になります。時間帯を絞りたいときは 0 9-18 * * 1-5 のように範囲で書けます。
    手で叩くと動くのに cron では動かない cron が渡す環境はログインシェルとまったく違います。PATH/usr/bin:/bin 程度しかなく.bashrc も読まれず、NVM_DIRrbenv の初期化も走りません。しかも標準出力と標準エラーは (メール設定が無ければ) どこにも残らないので、失敗したことにすら気付けません。 コマンドは絶対パスで書き (which node の結果をそのまま)、crontab の先頭に PATH=CRON_TZ=Asia/Tokyo を宣言し、行末に >> /var/log/myjob.log 2>&1 を付けます。切り分けのときは * * * * * env > /tmp/cronenv を 1 分だけ仕掛けると、cron が実際に渡している環境がそのまま見られます。

    このパーサーは 5 フィールド (分 時 日 月 曜) の標準 cron を対象にしています。先頭に秒を加えた 6 フィールド形式は、Quartz や node-cron、Spring の @Scheduled といった実装独自の拡張で、Linux の crontab には通りません。逆に @daily@reboot のような特殊文字列は crontab では使えても多くのライブラリでは解釈されません。動かす先の実装のドキュメントで、必ず一度確かめてください

    📖 使い方

    1. 1
      5 フィールド: 分 時 日 月 曜
      左から「分 (0-59) 時 (0-23) 日 (1-31) 月 (1-12) 曜日 (0-6, 0=日)」
    2. 2
      特殊文字: * / , -
      * = すべて、*/N = N ごと、A,B = AまたはB、A-B = AからB
    3. 3
      実行時刻を確認
      右側の「次の 10 回」で意図通りか必ず確認してから本番投入

    ❓ よくある質問

    6 フィールド (秒含む) はサポート?
    現状 5 フィールド標準 (Linux crontab) のみ。Quartz / Spring の秒付きは未対応
    複雑な式の確認に?
    「次の 10 回」で実行時刻を確認するのが一番確実。曖昧な dow と dom の組合せは特に注意
    タイムゾーン?
    表示はブラウザのローカル時刻。サーバー側の cron が動く TZ と一致するか必ず確認
    🐛 このツールで問題が発生しましたか?

    完全無料・登録不要。再現手順だけでも結構です。届いたご報告は運営者に直接届き、修正の参考にします。

    ※ 不具合再現のため、ブラウザ情報 (UA / 画面サイズ / 言語 / URL) を自動で送信します