LinuxやUnix系OSでは、cronを使うことでコマンドやスクリプトを定期的に自動実行できます。バックアップ、ログ整理、バッチ処理など、サーバー運用や開発現場では欠かせない仕組みです。
本記事では、cronの基本概念から設定方法、運用時の注意点、実務で使える管理のコツまでを体系的に解説します。
cronとは何か
cronは、指定した日時・周期でコマンドを実行するためのジョブスケジューラです。cronデーモン(crond)が常駐し、設定ファイル(crontab)を定期的に監視してジョブを実行します。
cronでできることの例
- 毎日深夜にバックアップを取得する
- 毎時間ログファイルをローテーションする
- 毎週バッチ処理を実行する
- 定期的に監視スクリプトを動かす
crontabの基本
cronの設定は crontab(cron table) と呼ばれるファイルで管理します。ユーザーごとにcrontabを持つことができ、root用のシステムcrontabも存在します。
crontabの編集
crontab -e
初回実行時は、使用するエディタ(vi / nano など)を選択します。
crontabの確認
crontab -l
crontabの削除
crontab -r
cronの書式ルール
crontabの1行は、次の形式で記述します。
分 時 日 月 曜日 コマンド
各フィールドの意味
| フィールド | 範囲 | 説明 |
|---|---|---|
| 分 | 0–59 | 実行する分 |
| 時 | 0–23 | 実行する時 |
| 日 | 1–31 | 実行する日 |
| 月 | 1–12 | 実行する月 |
| 曜日 | 0–7 | 0/7=日曜、1=月曜 |
記号の使い方
| 記号 | 意味 | 例 |
|---|---|---|
* | すべて | 毎分、毎日 |
, | 複数指定 | 1,15 |
- | 範囲 | 1-5 |
/ | 間隔 | */10 |
設定例(よく使うcronジョブ)
毎日2時にスクリプトを実行
0 2 * * * /home/user/backup.sh
10分おきに処理を実行
*/10 * * * * /usr/bin/python3 /home/user/task.py
平日のみ9時に実行
0 9 * * 1-5 /path/to/script.sh
cron実行時の注意点
環境変数が限定的
cronは通常のログインシェルと異なり、環境変数が最小限です。以下の対策が有効です。
- コマンドは絶対パスで指定する
- crontab内で
PATHを明示的に定義する
PATH=/usr/local/bin:/usr/bin:/bin
権限と実行権限
- スクリプトに実行権限があるか確認
- 実行ユーザーで必要なファイルにアクセス可能か確認
chmod +x script.sh
ログ管理とデバッグ
cronは標準出力・標準エラーをメール送信します(mailが有効な場合)。ログとして保存するにはリダイレクトを利用します。
0 2 * * * /path/to/script.sh >> /var/log/script.log 2>&1
実行されない場合のチェックポイント
- crondが起動しているか
- 時刻・タイムゾーンの設定
- 書式ミス(全角スペース混入など)
システムcronと/etc配下の設定
/etc/crontab
/etc/crontabでは、ユーザー指定付きでジョブを定義します。
分 時 日 月 曜日 ユーザー コマンド
/etc/cron.d/
アプリケーションごとにcron設定を分離したい場合に有効です。
運用上のベストプラクティス
- 処理内容はスクリプト化し、cronには最小限の記述のみを書く
- ログ出力を必ず行う
- 実行頻度の高いジョブは負荷に注意する
- 設定内容をGitなどで管理する
まとめ
cronはシンプルながら非常に強力な定期実行機構です。正しい書式理解と運用ルールを押さえることで、サーバー管理や開発作業の自動化を大きく効率化できます。
基本設定から実務的な管理ポイントまでを理解し、安定したジョブ運用を目指しましょう。

