使い方
- cron式を入力または貼り付けるか、よく使われるスケジュールを選択します。
- 式の意味が自然な文章で表示されます。無効なフィールドがある場合は、そのフィールドと理由が表示されます。
- 次回の実行時刻を10件まで、現地のタイムゾーンで確認できます。サーバーがUTCで動作している場合は、UTCに切り替えてください。
- 実行時刻をコピーして共有するか、必要なスケジュールになるまで式を調整します。
仕組み
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文字の曜日名も使えます。
プライバシー
式の解析と実行時刻の計算はブラウザー内で行われます。入力内容がアップロード、保存されたり、アナリティクスに含まれたりすることはありません。