コンテンツへスキップ
uencoder

cron 式が実際にいつ実行されるかを理解する

cron 式を貼り付けると、スケジュールフィールドの正確な内容と次回の実行時刻を確認できます。多くの人がつまずく表記についても解説します。

  1. 1
    Cron 式パーサー →

    */15 * * * * や 0 9 * * 1-5 のような式を貼り付けます。ツールは式を分/時/日/月/曜日のフィールドに分解し、それぞれを平易な言葉で説明します。

  2. 2

    記法のポイント:* はそのフィールドのすべての値を意味します。*/5 はフィールド最小値から数えて 5 個ごとの値を意味します。範囲(1-5)とリスト(1,15)は自由に組み合わせられます。古典的な落とし穴:標準 cron では、日(day-of-month)と曜日(day-of-week)の両方が制限されている(* 以外)場合、どちらか一方が一致すればその日はマッチします(両方ではなく OR)。

  3. 3
    Cron 式ジェネレーター →

    逆方向も可能です。スケジュールを記述すると式が得られます。秒フィールドを追加する 6 フィールドシステムに便利です。

  4. 4

    移植性に関する 2 つの警告:システムによっては 6〜7 フィールド(秒、年)を期待するものがあります。スケジューラの方言を確認してください。cron はサーバーのローカルタイムゾーンで発火するため、9:00 の式はホストごとに異なる UTC 時刻で実行され、夏時間の移行で実行がスキップされたり重複したりすることがあります。

よくある質問

cron は夏時間を処理できますか?
cron は壁時計時刻で評価するため、夏時間の移行前後で実行がスキップまたは重複する可能性があります。間隔が重要な処理には、UTC でのスケジューリングや単調タイマーの使用を検討してください。
分フィールドの * と */5 の違いは?
* は毎分マッチします。*/5 は 0、5、10、…、55 分をマッチします。フィールドの最小値から始めて 5 番目ごとです。
なぜ式が期待した日に実行されないのですか?
日(day-of-month)と曜日(day-of-week)の両方が制限されている場合、標準 cron はそれらを OR で結合します。AND のセマンティクスが必要な場合は、どちらか一方のフィールドを * にして、ラッパー側でチェックしてください。

このタスクを解決するワークフロー

関連ツール