1.cronとは
定期的に特定のジョブを実行する機能のことを「cron」と呼ぶ。
cronは、以下の3要素で構成されている。
- crond…スケジュールを管理するデーモン。
- crontabコマンド…スケジュールを設定するためのコマンド。
- crontabファイル…スケジュールが設定されたファイル。
※crontabファイルにはユーザーとシステムの2種類のファイルがある。
ユーザーのcrontabファイルは、ユーザーがcrontabコマンドで設定するもの。/var/spool/cronに保存されている。
システムのcrontabファイルは、rootが直接エディタで設定を書き込むもの。/etc/crontabファイルを使う。
2.ユーザーのcrontabファイル設定(コマンド「crontab」)
(1)コマンド「crontab」
ユーザーによるcrontabファイルの設定にはコマンド「crontab」を使用する。
①書式
crontab [オプション]
例)crontab -l
→ユーザーのcrontabファイルの内容を表示。
②オプション
crontab -e
エディタで開いて編集。
crontab -l
ファイルの内容を表示。
crontab -r
ファイルの削除。
③ファイルの編集方法
オプション「-e」で編集にしたら、以下の書式でスケジューリングしたいコマンドを指定する。
<書式>分 時 日 月 曜日 コマンド
項目 | 説明 |
分 | 0〜59までの整数 |
時 | 0〜23までの整数 |
日 | 1〜31までの整数 |
月 | 1〜12、jan〜decなど月を表す文字列 |
曜日 | 0〜7までの整数か、sun,monなど曜日を表す文字列 |
コマンド | 指定の日時で実行したいコマンド |
<編集例>0 7 * * * /コマンド
→毎日7時にコマンドが起動する。
3.システムのcrontabファイル設定
システム側で使うcrontabファイルは「/etc/crontab」のファイルをcat等で開き直接編集することになる。基本的な書き方はユーザーと変わらないがコマンドの実行者を明記する必要がある。
4.未処理ジョブの自動実行(anacron)
システム自体がシャットダウンしているとcronは動作せずジョブ実行を逃すことになる。この逃したジョブをシステム起動時に自動で実行する機能として「anacron」がある。前回のジョブ実行日付から特定の期間実行されていないことをシステム起動時に判別して、対象ジョブを実行する仕組み。
特定のディレクトリに実行したいジョブのファイルを保存しておくことで、各ディレクトリに応じた頻度で保存したファイルを実行してくれる。
実行頻度 | 保存先ディレクトリ |
1日1回 | /etc/cron.daily |
7日1回 | /etc/cron.weekly |
1ヵ月1回 | /etc/cron/monthly |
5.アクセス制御
予約したジョブが多すぎるなどでシステム負荷が高まり、他のジョブの処理の遅延や中断が発生することがある。それらの事態を避けるため、crontやatを使った予約をユーザー単位で制限をかける。これをアクセス制御と言い、ユーザーの利用許可や拒否を特定のファイルに記載することで実現できる。
優先順位 | ファイル名 | 解説 |
1 | /etc/cron.allow | cronの利用を許可するユーザー |
2 | /etc/cron.deny | cronの利用を拒否するユーザー |
3 | /etc/at.allow | atの利用を許可するユーザー |
4 | /etc/at.deny | atを拒否するユーザー |