Cron
cronは、UNIXおよびUNIX系オペレーティングシステムにおいて、特定の時間に特定のタスク(ジョブ)を自動的に実行するためのスケジューリングユーティリティである。cronは、システム管理者やユーザーが定期的なタスクを自動化するのに利用され、システムのメンテナンス、バックアップ、ログの整理など、さまざまな用途に使用される。
概要
cronは、UNIXおよびUNIX系オペレーティングシステムにおけるタスクスケジューリングユーティリティであり、定期的なタスクの自動化を実現するために不可欠である。crontabファイルを使用してタスクのスケジュールを設定し、`crontab`コマンドで管理する。cronは、データバックアップ、ログの整理、システムのアップデートなど、さまざまな自動化タスクに応用される。システム管理者やユーザーは、cronを活用することで、効率的なシステム運用を実現できる。
cronの基本構造
cronは、定期的に実行されるタスクを指定するために、特定のフォーマットで記述された設定ファイル(crontab)を使用する。crontabファイルには、実行するコマンドとその実行スケジュールが含まれる。
crontabファイルのフォーマット
crontabファイルは、以下の形式で記述される。 ```
- * * * * コマンド
分 時 日 月 曜日 コマンド ``` 各フィールドの意味は以下の通りである。
- **分**: 0から59までの値
- **時**: 0から23までの値
- **日**: 1から31までの値
- **月**: 1から12までの値
- **曜日**: 0から7までの値(0と7は日曜日)
例えば、以下のエントリは毎日午前2時30分にスクリプトを実行する設定を示す。 ``` 30 2 * * * /path/to/script.sh ```
crontabコマンド
crontabファイルの管理は、`crontab`コマンドを使用して行う。以下に主要なcrontabコマンドを示す。
crontab -e
ユーザーのcrontabファイルを編集するコマンド。指定したエディタでcrontabファイルを開き、編集後に保存することでスケジュールを設定する。 ``` crontab -e ```
crontab -l
現在のユーザーのcrontabファイルを表示するコマンド。 ``` crontab -l ```
crontab -r
現在のユーザーのcrontabファイルを削除するコマンド。 ``` crontab -r ```
crontab -u
他のユーザーのcrontabファイルを管理するためのオプション。スーパーユーザー権限が必要。 ``` crontab -u ユーザー名 -e ```
cronの実行環境
cronデーモンは、システム起動時に自動的に開始され、バックグラウンドで動作する。cronデーモンは、定期的にcrontabファイルをチェックし、指定された時間にタスクを実行する。
ログファイル
cronの実行結果は、通常、システムのログファイルに記録される。標準的なログファイルは以下の通りである。
- **/var/log/cron**: cronデーモンのログ
- **/var/log/syslog**: システム全体のログ(cronのログも含まれる場合がある)
環境変数
cronジョブが実行される環境は、通常のユーザー環境とは異なる。環境変数を設定するために、crontabファイルの先頭に以下のように記述することができる。 ``` PATH=/usr/bin:/bin:/usr/local/bin MAILTO=ユーザー名 ``` `PATH`変数はコマンドの検索パスを指定し、`MAILTO`変数はジョブの出力を指定したユーザーにメールで送信するための設定である。
cronの応用例
cronを使用して自動化する一般的なタスクの例を以下に示す。
データバックアップ
毎日深夜にデータベースのバックアップを実行する。 ``` 0 0 * * * /usr/bin/mysqldump -uユーザー名 -pパスワード データベース名 > /backup/db_backup.sql ```
ログの整理
毎週日曜日の午前3時に古いログファイルを削除する。 ``` 0 3 * * 0 /usr/bin/find /var/log -type f -name "*.log" -mtime +30 -exec rm {} \; ```
システムのアップデート
毎月1日の午前4時にシステムをアップデートする。 ``` 0 4 1 * * /usr/bin/apt-get update && /usr/bin/apt-get upgrade -y ```
crontabファイルの管理
複数のユーザーが同じシステムでcronジョブを設定する場合、各ユーザーが自身のcrontabファイルを持つことができる。これにより、個々のユーザーのジョブが独立して管理される。
システムワイドのcrontab
システム全体のcronジョブを設定するために、`/etc/crontab`ファイルが使用される。このファイルには、ユーザー名のフィールドが追加されており、特定のユーザーとしてジョブを実行できる。 ``` 分 時 日 月 曜日 ユーザー名 コマンド ```
管理支援ツール
Cron job editor
「Cron job editor」は、cronの設定を簡単に作成し、カレンダーで可視化できる無料ツールである。cron式を入力すると、トリガーされる時間を一目で確認できる。また、複雑なcron式の例やチートシートも提供されており、設定の手助けをする。これにより、初心者でも直感的にcronジョブを管理できる。[1]