約3分で読めます
cron式の書き方入門|5つのフィールドの意味と実例・よくある間違い
cron式とは
cron(クーロン)は、サーバー上でコマンドを定期実行する仕組みです。その「いつ実行するか」を記述するのがcron式です。バックアップ、レポート送信、データ集計など、繰り返し処理のスケジュール指定に欠かせません。
5つのフィールド
cron式は半角スペースで区切られた5つのフィールドで構成されます。
* * * * *
│ │ │ │ │
│ │ │ │ └─ 曜日(0-7, 0と7が日曜)
│ │ │ └─── 月(1-12)
│ │ └───── 日(1-31)
│ └─────── 時(0-23)
└───────── 分(0-59)
| フィールド | 範囲 | 意味 |
|---|---|---|
| 1番目 | 0-59 | 分 |
| 2番目 | 0-23 | 時 |
| 3番目 | 1-31 | 日 |
| 4番目 | 1-12 | 月 |
| 5番目 | 0-7 | 曜日(0/7=日曜) |
使える記号
*— すべての値(毎分・毎時など),— 複数指定(1,15= 1分と15分)-— 範囲(1-5= 1から5まで)/— 間隔(*/5= 5ごと)
実例
| cron式 | 意味 |
|---|---|
* * * * * |
毎分 |
0 * * * * |
毎時0分(1時間ごと) |
0 9 * * * |
毎日9時0分 |
*/15 * * * * |
15分ごと |
0 9 * * 1 |
毎週月曜の9時 |
0 0 1 * * |
毎月1日の0時 |
0 9-18 * * 1-5 |
平日の9時〜18時、毎時0分 |
cron式は慣れるまで読み解きにくいので、cron式解析ツールに貼り付けて「次にいつ実行されるか」を確認しながら書くと確実です。
よくある間違い
1. 分のフィールドを「*」にしてしまう
「毎日9時に1回」のつもりで * 9 * * * と書くと、9時台に毎分(60回)実行されてしまいます。正しくは 0 9 * * * です。先頭の分を 0 に固定するのを忘れがちです。
2. 日と曜日の両方指定
日(3番目)と曜日(5番目)を両方指定すると、多くの実装で「どちらかに一致すれば実行」というOR条件になります。「毎月1日かつ月曜だけ」のつもりが意図と違う動きをします。
3. タイムゾーンの勘違い
cronは通常サーバーのタイムゾーンで動きます。サーバーがUTCなら、0 9 * * * は日本時間の18時です。意図した時刻に動かないときは、まずサーバーのタイムゾーンを確認しましょう。
まとめ
- cron式は「分・時・日・月・曜日」の5フィールド
- 記号は
*,-/を組み合わせる - 「毎日1回」は分を
0に固定する(*にしない) - 日と曜日の同時指定はOR条件になりがち
- 動作確認はcron式解析ツールで