tigtools

Cron式の解説

5フィールドのcronスケジュールを入力すると、その意味と次回の実行時刻を確認できます。すべてブラウザー内で計算されます。

ブラウザー内で動作 登録不要

5つのフィールド(分、時、日、月、曜日)を指定します。@daily などのマクロも使用できます。

よく使うスケジュール

意味

15分ごと、09:00時から17:59時まで、月曜日から金曜日までに。

フィールド

分
*/15
時
9-17
日
*
月
*
曜日
1-5
タイムゾーン

次の10回の実行

    使い方

    1. cron式を入力または貼り付けるか、よく使われるスケジュールを選択します。
    2. 式の意味が自然な文章で表示されます。無効なフィールドがある場合は、そのフィールドと理由が表示されます。
    3. 次回の実行時刻を10件まで、現地のタイムゾーンで確認できます。サーバーがUTCで動作している場合は、UTCに切り替えてください。
    4. 実行時刻をコピーして共有するか、必要なスケジュールになるまで式を調整します。

    仕組み

    Linuxのcrontab(Vixie cronおよびcronie)や、多くのCI・ホスティングサービスのスケジューラーで使われる標準的なcron式は、スペースで区切られた5つのフィールドで構成されます。順に、分(0–59)、時(0–23)、日(1–31)、月(1–12またはJAN–DEC)、曜日(0–7またはSUN–SAT。0と7はどちらも日曜日)です。各フィールドには、すべての値を表す*、単一の値、1-5のような範囲、1,15,30のようなリスト、*/15(15個ごとの値)や9-17/2(9時から17時まで2時間ごと)のような間隔を指定できます。曜日や月の名前は大文字・小文字を区別しません。@yearly(または@annually)、@monthly、@weekly、@daily(または@midnight)、@hourlyの省略形は、それぞれ0 0 1 1 *、0 0 1 * *、0 0 * * 0、0 0 * * *、0 * * * *を表します。

    日と曜日のフィールドには、多くの人が意外に感じるルールがあります。どちらかのフィールドが*で始まる場合は、両方のフィールドに一致する日が実行対象になります。両方のフィールドに値が指定されている場合は、どちらか一方に一致すれば実行されます。たとえば0 0 13 * 5は、毎月13日と毎週金曜日に実行され、13日の金曜日だけに実行されるわけではありません。フィールドが*で始まるかどうかで判定されるため、*/2のような間隔指定も、制限なしとして扱われます。これはVixie cronおよびcronieの動作です。一部のスケジューラーでは異なる動作をします。

    次回実行時刻は、ブラウザーのタイムゾーンまたはUTCで計算されます。多くのサーバーやクラウドスケジューラーではUTCが使われます。cron自体は実行されるマシンのタイムゾーンを使用します。夏時間の切り替え時の動作は、実際のcronデーモンによって異なります。このツールでは、時計を進めたときに存在しない現地時刻は省略し、重複する時間帯は1回だけ表示します。拡張構文には対応していません。秒または年を含む6・7フィールドのQuartz式や、特殊文字の?、L、W、#は使用できません。

    使用例

    営業時間中の稼働状況チェック

    */15 9-17 * * 1-5は、月曜日から金曜日の09:00〜17:59に15分ごとに実行します。各日の最後の実行時刻は17:45です。

    夜間バックアップ

    30 2 * * *は毎日02:30に実行します。サーバーがUTCを使用していて、利用者がニューヨークにいる場合、UTCモードの次回実行時刻一覧には、サーバーで実際に使われる時刻が表示されます。

    日付フィールドの落とし穴

    0 9 1 * 1は「月初が月曜日の場合、9:00に実行」のように見えますが、実際には毎月1日の09:00と毎週月曜日に実行されます。月の第1月曜日だけに実行するには、0 9 1-7 * *を設定し、スクリプト内で曜日を確認してください。

    よくある質問

    cronの*/5は何を意味しますか?

    フィールドの最小値から数えて、5つごとの値を表します。分フィールドの*/5は、0、5、10…55分に実行されます。時フィールドの*/5は0、5、10、15、20時に実行されるため、20:00から午前0時までの間隔は5時間ではなく4時間です。

    予想より多くの日にジョブが実行されるのはなぜですか?

    日と曜日の両方のフィールドに値が指定されている場合、どちらかに一致する日に実行されます。たとえば0 0 15 * 1は、毎月15日と毎週月曜日に実行されます。どちらか一方のフィールドを*にすると、もう一方だけが条件になります。

    cronではどのタイムゾーンが使われますか?

    通常はcronデーモンを実行しているサーバーのシステムタイムゾーンが使われます。ただし、crontabでCRON_TZまたはTZ(cronieでサポート)を設定している場合は、その設定が使われます。クラウドスケジューラーではUTCが既定の場合がよくあります。UTCスイッチを使うと、UTCサーバーで使われる時刻を確認できます。

    秒や年のフィールドは使えますか?

    標準的なcronでは使えません。標準的なcronは1分単位で、フィールドは5つです。秒や年を含む6・7フィールド形式はQuartz、Springなどのライブラリーで使われるもので、このツールには対応していません。

    日曜日は0ですか、7ですか?

    どちらも日曜日を表します。曜日フィールドでは、0が日曜日、1が月曜日、6が土曜日、7も日曜日です。SUNからSATまでの3文字の曜日名も使えます。

    プライバシー

    式の解析と実行時刻の計算はブラウザー内で行われます。入力内容がアップロード、保存されたり、アナリティクスに含まれたりすることはありません。