cronで定期実行ジョブを管理する方法

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–70/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はシンプルながら非常に強力な定期実行機構です。正しい書式理解と運用ルールを押さえることで、サーバー管理や開発作業の自動化を大きく効率化できます。

基本設定から実務的な管理ポイントまでを理解し、安定したジョブ運用を目指しましょう。

タイトルとURLをコピーしました