目次
- ジョブスケジューリング
- cron(ユーザーのcrontab、システムのcrontab)
- atコマンド
- cronとatのアクセス制御(cronのアクセス制御、atのアクセス制御)
- systemdのスケジュール管理
ジョブスケジューリング
システム運用には、バックアップやログファイルの管理など、メンテナンス作業が欠かせません。
定期的に実施する作業については、自動的に実行されるように設定することによって、システム管理コストを下げることが出来ます。
Linuxでは、定期的に実行するジョブについてはcronを、1回限りのジョブの予約についてはatコマンドを使って、スケジューリングできます。
cron
定期的にジョブを実行するcronは、スケジュールを管理するデーモンであるcrondと、スケジューリングを編集するcrontabコマンドから構成されます。
crondデーモンは1分ごとにcrontabファイルを調べて、実行すべきスケジュールが存在すればそのジョブを実行します。
ユーザーのcrontab
ユーザーのcrontabファイルは/var/spool/cronディレクトリ以下に置かれています。
オプション | 説明 |
-e | エディタを使ってcrontabファイルを編集する。 |
-l | crontabファイルの内容を表示する。 |
-r | crontabファイルを削除する。 |
-i | crontabファイル削除時に確認する。 |
-u ユーザー名 | ユーザーを指定してcrontabファイルを編集する。 (rootユーザーのみ) |
cronジョブを設定するには、-eオプションを指定して実行します。
フィールド | 内容 |
分 | 0~59までの整数 |
時 | 0~23までの整数 |
日 | 1~31までの整数 |
月 | 1~12までの整数、もしくはjan~decまでの文字列 |
曜日 | 0~7までの整数、(0,7:日曜~6:土曜)もしくはSun、Monなどの文字列 |
コマンド | 実行すべきコマンド |
システムのcrontab
ユーザーのcrontabファイルとは別にシステム用のcrontabファイルもあります。
/etc/crontabファイルとは別にシステム用のcrontabファイルもあります。
/etc/crontabファイルでは一般的に、そこから/etc/cron.*ディレクトリに置かれたファイルを呼び出すようになっています。
/etc/crontabファイルには、実行ユーザー名を指定するフィールドが加わります。
以下、crontab関連のファイルとディレクトリです。
ファイル/ディレクトリ | 説明 |
/etc/crontab | システムのcrontabファイル |
/etc/cron.d/ | 各種のcronジョブを記述したファイルを収めたディレクトリ |
/etc/cron.hourly/ | 1時間に1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
/etc/cron.daily/ | 1日に1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
/etc/cron.weekly/ | 週に1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
/etc/cron.weekly/ | 月に1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
/var/spool/cron (または/var/spool/cron/crontab/) | ユーザーのcrontabファイルを収めたディレクトリ |
atコマンド
cronが定期的に繰り返し実行するジョブを扱うのに対し、atコマンドは1回限りの実行スケジュールを扱います。
atコマンドによるスケジューリングを実施するには、atデーモンが動作している必要があります。
以下、atコマンドの主なオプションです。
オプション | 説明 |
-dジョブ/-rジョブ | 予約中のジョブをジョブ番号で指定して削除する。 (=atrmコマンドでも同様の動作をします。) |
-l | 予約中のジョブを表示する。 (=atqコマンドでも同様の動作します。) |
-f | コマンドを記述したファイルを指定する。 |
以下、atコマンドの日時指定書式の例です。
指定日時 | 書式 |
午後10時 | 22:00、10pm |
正午 | noon |
真夜中 | midnight |
今日 | today |
明日 | tomorrow |
3日後 | now + 3 days |
2週間後の22:00 | 10pm + 2 weeks |
cronとatのアクセス制御
cronのアクセス制御
cronを利用するユーザーを制限するには、/etc/cron.allow、/etc/cron.denyを使います。
/etc/cron.allowはにはcronの利用を許可するユーザーを記述します。
/etc/cron.denyにはcronの利用を拒否するユーザーを記述します。
atのアクセス制御
atコマンドを利用するユーザーを制限するには、/etc/at.allow、/etc/at.denyを使います。
/etc/at.allowにはatの利用を許可するユーザーを記述します。
/etc/at.denyにはatの利用を拒否するユーザーを記述します。
systemdによるスケジューリング
systemdのタイマーUnitを使うと、cronの代わりにスケジューリングを設定することが出来ます。
タイマーUnitでは、「システム起動後10分後」のように、何らかのイベントから一定時間経過した後に発動し、以後定期的に実施されるモノトニックタイマーと、crontabと同様にカレンダーで指定して定期的に実施されるリアルタイムタイマーがあります。
systemd-runコマンドを使うと、より簡単にスケジュールを予約できます。
最後まで読んで頂き、ありがとうございました。
他の分野へ移動できる全体ページへは下記リンクから移動できます。