サーバー管理やプログラミングをしていると、「毎日自動でバックアップしたい」「定期的にログを削除したい」といった定期的な処理を自動で行いたくなる場面が多くあります。
その時に使うのが『cron(クロン)』です。
この記事では『cron(クロン)』について、以下の内容をわかりやすく解説します。
- cronとは何か
- cronの仕組み
- crontabの書き方
cronとは?
cron(クロン)は、Linux / Unix系OSで、特定の日時や一定間隔でコマンドを自動実行するための仕組みです。あらかじめ設定した日時や間隔に従って、コマンドやスクリプトを定期的に自動実行できます。
たとえば、次のような「ルーティン作業」を完全自動化できます。
- 毎日3時にバックアップを実行
- 5分ごとにAPIを叩く
- 毎週月曜日にログを削除
- 毎分または毎時の定期処理
そのためサーバー運用・バッチ処理・自動化の現場でよく利用されています。
cronの仕組み(cronデーモン)
cronはcronデーモン(crond)と呼ばれる常駐プログラムがバックグラウンドで動くことで実行されます。このcrondが、すべての自動実行を裏側で管理しています。
cronの仕組みはとてもシンプルで、次の3ステップだけです。
- cronデーモンが常に起動している
- サーバー起動時に自動で動き始め、常に待機しています。
- 毎分「実行すべきジョブがあるか」を判定する
- crondは1分ごとに現在時刻を見て、crontabに登録されているジョブの中から「今の時刻に実行すべきものがあるか」を判定します。
- 条件に一致するコマンドを実行する
- 今の時刻に実行すべきジョブがあれば、crondが指定されたコマンドやスクリプトを実行します。
crontab(クーロンタブ)とは?
cronで実行する日時とコマンドを設定するファイルをcrontabと呼びます。ユーザーごとに独立したcrontabを持てるため、rootアカウントと一般ユーザーで別々にスケジュールを管理できます。
例えば、
- root:毎日4時にシステムバックアップを実行
- userA:毎時APIをチェック
- userB:深夜にレポートを自動生成
といったように、ユーザー単位で自由に設定できます。
crontabの書式は次のように、5つの時間フィールドと実行するコマンドで構成されています。
分 時 日 月 曜日 コマンド例えば、次の1行は「毎日2:30に/usr/bin/backup.shを実行する」という意味です。
30 2 * * * /usr/bin/backup.sh5つの時間フィールドの意味を以下に示します。
| フィールド | 範囲 | 意味 | 例 |
|---|---|---|---|
| 分 | 0–59 | 何分に実行するか | 0, 30 |
| 時 | 0–23 | 何時に実行するか | 2, 15 |
| 日 | 1–31 | 何日に実行するか | 1, 31 |
| 月 | 1–12 | 何月に実行するか | 1, 12 |
| 曜日 | 0–7 | 何曜日に実行するか(0と7が日曜) | 0, 1(月曜) |
crontabでは、指定を柔軟にするために以下の記号を使用することもできます。
| 記号 | 意味 | 例 |
|---|---|---|
* | 任意の値(毎分/毎時/毎日) | * * * * *(毎分) |
, | 複数指定 | 1,15(1分と15分) |
- | 範囲指定 | 1-5(1〜5分) |
*/n | n間隔で実行 | */5(5分ごと) |
これらを組み合わせることで、細かいスケジュール指定も自在にできます。
本記事のまとめ
この記事では『cron(クロン)』について説明しました。
cron(クロン)は、サーバー運用やプログラミングに欠かせない「自動化の基本ツール」です。特定の日時や間隔でコマンドを実行できるため、バックアップ・ログ削除・バッチ処理・API監視など、日々のルーティン作業を大幅に効率化できます。
お読みいただきありがとうございました。