Cron式ジェネレーター
0-59
0-23
1-31
1-12
0-7(0,7=日)
cronの構文は簡潔ですが間違えやすく、たとえば0 */6 * * *は6時間ごとに実行されますが、*/6 0 * * *は午前0時台の最初の1時間だけ、10回実行されます。このジェネレーターでは、スケジュール(15分ごと、平日の午前9時、毎月1日など)を視覚的に選ぶだけで正確な式が得られ、その意味を平易な言葉で説明した説明文も表示されます。
cron式の作り方
-
1
プリセットを選ぶか、フィールドに直接入力する
毎分、毎時、毎日0時、毎週日曜日、毎月1日はワンクリックで選択できます。それ以外のスケジュールは、5つのフィールドに直接値を入力してください。
-
2
スケジュールを絞り込む
特定の分・時・日(日付)・月・曜日を指定できます。範囲(9-17)、リスト(1,15)、ステップ(*/6)にすべて対応しています。
-
3
式を読み取る
ジェネレーターは常に標準の5フィールドcron形式を出力し、スケジュールの内容を平易な言葉で説明します。
-
4
方言を確認する
方言によって仕様が異なります(Quartz、AWS EventBridge、Kubernetes)。お使いのスケジューラーが期待する形式と式が一致することを確認してください。
5つのフィールド
* * * * *
│ │ │ │ │
│ │ │ │ └── 曜日 (0-6、日曜日=0、または SUN-SAT)
│ │ │ └───── 月 (1-12、または JAN-DEC)
│ │ └──────── 日(日付) (1-31)
│ └─────────── 時 (0-23)
└────────────── 分 (0-59)
各フィールドには次の値を指定できます:
- 特定の数値:
5 - リスト:
1,15,30 - 範囲:
9-17 - ステップ:
*/10(10ごと)または0-30/5(0から30まで5ごと) - ワイルドカード:
*(すべての値)
よく使う式
| スケジュール | cron式 |
|---|---|
| 毎分 | * * * * * |
| 15分ごと | */15 * * * * |
| 毎時0分 | 0 * * * * |
| 6時間ごと | 0 */6 * * * |
| 毎日午前2時30分 | 30 2 * * * |
| 平日の午前9時 | 0 9 * * 1-5 |
| 毎週月曜日の午前8時 | 0 8 * * 1 |
| 毎月1日の午前3時 | 0 3 1 * * |
| 平日の9時から17時まで15分ごと | */15 9-17 * * 1-5 |
| 毎月1日と15日の正午 | 0 12 1,15 * * |
| 毎週日曜日の午前0時 | 0 0 * * 0 |
「日付」と「曜日」の落とし穴
標準のcronでは、「日付(日)」と「曜日」の両方を指定した場合(どちらも*でない場合)、いずれか一方が一致した時点でジョブが実行されます(ANDではなくOR)。0 0 1 * MONは、毎月1日および毎週月曜日に実行され、1日が月曜日のときだけ実行されるわけではありません。
Vixie CronおよびほとんどのLinuxディストリビューションはこの「OR」ルールを採用しています。Quartz(Java)や他の一部の環境では「AND」が使用されています。不確かな場合は、スケジューラーで試し実行(dry run)かテストジョブを使って式を確認してください。
方言の違い
- 標準的なcron(Linux):5つのフィールドあり、曜日(0~6)で指定可能(日曜日は0または7)。
- Quartz(Spring、Javaアプリ):6~7つのフィールドで構成され、第1フィールドは秒、オプションの第2フィールドは年。曜日は1~7(日曜日=1)です。
- AWS EventBridge cron:6フィールドで年を含みます。曜日と日付は相互排他的でなければならず、いずれか一方を
?にする必要があります。 - GitHub Actions:標準の5フィールド形式で、最小間隔は5分、UTCのみ対応です。
- Kubernetes CronJob:標準の5フィールド形式で、デフォルトはUTCです。
お使いのスケジューラーがどの方言を採用しているか必ず確認してください。
タイムゾーン
従来のcronはサーバーのローカルタイムゾーンで動作します。これは夏時間(DST)の切り替え時に大きな問題を引き起こします。たとえば午前2時30分のジョブは、切り替え日に2回実行されたり、まったく実行されなかったりすることがあります。最近のスケジューラー(systemdタイマー、Kubernetes、EventBridge)ではタイムゾーンを明示的に指定できます。特別な理由がない限りUTCを使うことをおすすめします。
よくある質問
そのフィールドで5単位ごと、0から始まることを意味します。分フィールドでは、*/5は0分、5分、10分、15分、…、55分に実行されます。0,5,10,15,20,25,30,35,40,45,50,55の短縮表記です。
cronは、60分や24時間で割り切れない任意の間隔を表現できません。90分の場合は、具体的な実行時刻を列挙します。0 0,9 * * *に追加の行を組み合わせるか、任意の間隔に対応したスケジューラー(systemdタイマー、anacron)に移行してください。
午前0時です。フィールドの順序は「分・時」なので、0 0は「0時の0分」を意味します。正午なら0 12 * * *です。
標準のcronはそのジョブをスキップします。実行漏れは再試行されません。Anacronは次回起動時に、漏れた日次・週次・月次ジョブを実行します。Kubernetes CronJobには、漏れた実行枠を明示的に扱うためのstartingDeadlineSecondsとconcurrencyPolicyが用意されています。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
HTML フォーマッター
ブラウザ内で HTML を 2 または 4 スペースで整形します。HTML はアップロードも検証もされません。
カラーパレットジェネレーター
基準のHEXカラーから、モノクロマティック、類似色、補色、トライアド、テトラードのパレットを生成し、コピーしやすいCSS変数として書き出します。
バイナリからASCIIへの変換ツール
バイナリ(スペース区切りのバイト、または長いビット列)を貼り付けると、それが表すASCIIテキストを8ビットずつ復号して取得できます。