cronとは?
cronはUnix系OSに搭載されたタスクスケジューラーです。 ギリシャ語の「chronos(時間)」に由来し、指定したスケジュールでコマンドやスクリプトを自動実行します。 データベースのバックアップ、ログのローテーション、定期メール送信、 サーバーメンテナンスなど、繰り返し発生するタスクの自動化に広く使われています。 クラウド環境(AWS CloudWatch Events、Google Cloud Scheduler、GitHub Actions など)でも cron構文が採用されており、インフラエンジニアや開発者にとって必須の知識です。
cron式の構造
標準的なcron式は、空白区切りの5フィールドで構成されます。 左から順に「分・時・日(月)・月・曜日」を表します。
*****
分 (0-59)時 (0-23)日 (1-31)月 (1-12)曜日 (0-7)
| フィールド | 使用できる値 | 使える特殊文字 |
|---|---|---|
| 分 | 0-59 | * , - / |
| 時 | 0-23 | * , - / |
| 日(月) | 1-31 | * , - / |
| 月 | 1-12 | * , - / |
| 曜日 | 0-7 | * , - / |
特殊文字(*/,-)の意味
* (アスタリスク)
すべての値にマッチします。時フィールドの * は「毎時」を意味します。
* * * * * → 毎分実行
, (カンマ)
値のリストを指定します。曜日フィールドの 1,3,5 は月・水・金を意味します。
0 9 * * 1,3,5 → 月水金の9時
- (ハイフン)
範囲を指定します。時フィールドの 9-17 は9時〜17時(各時00分)を意味します。
0 9-17 * * * → 9〜17時の毎時00分
/ (スラッシュ)
ステップ値を指定します。分フィールドの */15 は「15分ごと」を意味します。
*/15 * * * * → 15分ごと
cron設定のヒント
- 本番環境に適用する前に、必ず「次の実行日時」で動作を確認しましょう。
- 曜日フィールドでは 0 と 7 の両方が日曜を表します。
- 日(月)と曜日を同時に指定した場合、どちらかに一致すれば実行(OR条件)されます。
- 均等な間隔には、値を列挙するより
/(ステップ値)を使う方がシンプルです。 - 深夜0時や毎時00分など「区切り時刻」はジョブが集中しやすいため、少しずらすと負荷分散になります。
- cronはデフォルトでシステムのローカルタイムゾーンで動作します。サーバーのタイムゾーン設定を必ず確認しましょう。