Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

cron(クローン)とは | 意味や読み方など丁寧でわかりやすい用語解説

cron(クローン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

クロンスケジューラ (クロノスケジューラ)

英語表記

cron (クロン)

用語解説

cronは、UNIX系オペレーティングシステムにおいて、指定した時刻や間隔でコマンドやスクリプトを自動的に実行するためのスケジューラーである。システムやアプリケーションの運用において、定期的なデータバックアップ、ログファイルの整理、システム監視、レポート生成といった繰り返し発生するタスクを自動化するために不可欠なツールとして利用されている。手動での実行では手間がかかる処理や、実行忘れによるリスクを伴う処理を、確実に、そして決められたタイミングで実行させることで、システム運用の効率化と安定稼働に大きく貢献する。cronはデーモンとして常駐し、設定ファイルに記述されたスケジュールに従って処理を実行する。

詳細に入る。cronの心臓部は、定期実行するジョブ(タスク)の設定を記述する「crontab(クロンタブ)」というファイルである。各ユーザーは自分専用のcrontabファイルを所有でき、そこに記述されたジョブはそのユーザーの権限で実行される。システム全体に関わるジョブは、通常rootユーザーが設定する/etc/crontab/etc/cron.d/ディレクトリ内のファイルに記述されることが多い。cronデーモンはこれらのcrontabファイルを常に監視しており、設定された時刻になると対応するコマンドやスクリプトを実行する。

crontabファイルの各行は、ジョブの実行スケジュールと実行コマンドを定義する。一行は通常6つのフィールドから構成される。左から順に、分(0-59)、時(0-23)、日(1-31)、月(1-12)、曜日(0-7、0と7は日曜日)を表し、最後のフィールドが実行するコマンドとなる。例えば、「0 2 * * * /usr/bin/backup.sh」という記述は、毎日午前2時0分に/usr/bin/backup.shというスクリプトを実行することを示す。各フィールドでは、特定の値だけでなく、複数の値を指定するための特殊文字を使用できる。アスタリスク(*)は「すべての」という意味で、例えば「* * * * 」は「毎分」を意味する。ハイフン(-)は範囲を指定し、「9-17」は9時から17時までを表す。カンマ(,)は複数の値を指定し、「0,15,30,45」は0分、15分、30分、45分に実行することを意味する。スラッシュ(/)はステップ値を指定し、「/10」は「10分ごと」という意味になる。例えば、「0 */2 * * *」は、毎日偶数時間の0分に実行することを指す。

crontabファイルを編集するには、crontab -eコマンドを使用する。このコマンドを実行すると、デフォルトのエディタが起動し、現在のユーザーのcrontabファイルを編集できる。編集後、保存してエディタを閉じると、cronデーモンが自動的に変更を検知し、新しい設定を適用する。現在のユーザーのcrontabの内容を確認するにはcrontab -l、crontabファイルをすべて削除するにはcrontab -rコマンドを使用する。ただし、crontab -rは確認なしに削除を実行するため、誤って使用しないよう細心の注意が必要である。

cronでジョブを実行する際にはいくつかの注意点がある。特に、cron環境は通常の対話型シェル環境とは異なるため、期待通りの動作をしない場合がある。cronは最小限の環境変数しか持たないため、コマンドやスクリプトが参照するパス(PATH環境変数)やその他の環境変数が不足していることが原因で、実行に失敗することがよくある。これを避けるためには、実行するコマンドの絶対パスを記述するか、スクリプト内で必要な環境変数を明示的に設定することが推奨される。また、cronジョブの標準出力や標準エラー出力は、通常、そのジョブを設定したユーザーのメールボックスに送信される。これが大量に発生するとメールボックスを圧迫する可能性があるため、不要な出力は/dev/nullにリダイレクトしたり、ログファイルに保存したりする工夫が必要である。例えば、「/usr/bin/command > /var/log/command.log 2>&1」と記述することで、標準出力と標準エラー出力を/var/log/command.logファイルにまとめて出力できる。

複雑な処理や複数のコマンドを実行したい場合は、それらをシェルスクリプトとして記述し、cronでそのシェルスクリプトを実行する方法が最も一般的で推奨される。これにより、ジョブの管理が容易になり、デバッグもしやすくなる。スクリプトは必ず実行権限を付与し、shebang(#!/bin/bashなど)を正しく記述する必要がある。

ジョブが期待通りに実行されたか、あるいはエラーが発生したかを確認するためには、システムログを参照することが重要である。多くのUNIX系システムでは、cronの実行履歴が/var/log/syslog/var/log/cronといったファイルに記録される。これらのログを定期的に確認することで、問題の早期発見につながる。

cronは、そのシンプルな設定ながら、システム運用の多くの側面を自動化し、安定性を向上させる強力なツールである。システムエンジニアを目指す者にとって、cronの適切な理解と活用は、効率的なシステム管理を行う上で欠かせないスキルと言える。

関連コンテンツ

関連IT用語

関連ITニュース

関連プログラミング言語