Cron

提供:作業療法大百科事典OtWiki
2024年6月9日 (日) 02:57時点におけるOtfighter (トーク | 投稿記録)による版 (→‎Cron job editor)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

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]

参照