cron式 作成
cron式は分、時、日、月、曜日の5つのフィールドでできています。「0 9 * * 1-5」は「月曜日〜金曜日 09:00」、「*/15 * * * *」は「15分ごと」という意味です。
使い方
- 上の欄にcron式を入力するか、プリセットを選ぶか、5つのフィールドを1つずつ埋めます。上の欄と各フィールドは連動します。
- 曜日ボタンを押せば、数字を打たずに曜日を選べます。
- 「意味」に表示される説明を読み、次の5回の実行時刻を確認します。サーバーに合わせてローカル時刻とUTCを切り替えられます。
- 「式をコピー」でcrontab、CIのスケジュール、ジョブスケジューラーに貼り付ける式をコピーします。
計算方法
標準のcron式はスペースで区切った5つのフィールドからなります。分(0-59)、時(0-23)、日(1-31)、月(1-12またはJAN-DEC)、曜日(0-6またはSUN-SAT。0と7はどちらも日曜)です。
各フィールドには、すべての値を表す*、1,15のようなリスト、9-17のような範囲、*/5(5つおき)や10-30/5のようなステップが書けます。月と曜日は英語名も使え、@hourly、@daily、@weekly、@monthly、@yearlyのマクロは5フィールドの形に展開されます。
「0 0 13 * 5」のように日と曜日の両方を指定すると、cronはどちらか一方が当てはまる日に実行します。この例は毎月13日と毎週金曜日に動きます。どちらかが*で始まる場合は、両方に当てはまる日だけです。
次の実行時刻は、月と日の条件に合う日を1日ずつ先へ探し、その日の該当する時と分を並べて求めます。2月31日のように決して当てはまらないスケジュールでは何も表示されません。サマータイムの切り替えで存在しないローカル時刻は飛ばします。
よく使うスケジュール
| 式 | 意味 |
|---|---|
| * * * * * | 毎分 |
| */5 * * * * | 5分ごと |
| 0 * * * * | 毎時0分 |
| 0 0 * * * | 毎日0時 |
| 0 9 * * 1-5 | 平日の9:00 |
| 30 8 * * 1 | 毎週月曜の8:30 |
| 0 0 1 * * | 毎月1日 |
| 0 0 1 1 * | 毎年1月1日 |
よくある質問
cronの */5 はどういう意味?
ステップです。分のフィールドなら5分ごと、つまり0、5、10と55まで進みます。フィールドの最初の値から数えるので、時のフィールドの */5 は0時、5時、10時、15時、20時です。
平日の朝9時に実行するには?
0 9 * * 1-5 と書きます。0分、9時、日は指定なし、月も指定なし、曜日は月曜から金曜です。
思ったより多くの日に実行されるのはなぜ?
日と曜日の両方を指定すると、cronはどちらかに当てはまる日に実行します。第1月曜日だけに動かしたいときは標準のcronでは表せないので、ジョブの中のスクリプトで日付を判定してください。
cronはどのタイムゾーンで動きますか?
実行するマシンやサービスのタイムゾーンです。クラウドのスケジューラーはUTCのことが多いので、ローカルとUTCのボタンで両方を確認してください。
6フィールドや7フィールド、L や # 記号には対応していますか?
対応していません。このツールはcrontab、GitHub Actions、多くのLinuxスケジューラーで使う標準の5フィールド形式を扱います。秒や年、? L W # などの記号を加えるQuartzやAWSの形式は対象外です。
入力内容はサーバーに送られますか?
いいえ。解析も説明文も実行時刻もすべてブラウザ内で計算します。