IT

ジョブスケジューリング【LPIC level1】

目次

  • ジョブスケジューリング
  • 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ファイルを編集する。
-lcrontabファイルの内容を表示する。
-rcrontabファイルを削除する。
-icrontabファイル削除時に確認する。
-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:0010pm + 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コマンドを使うと、より簡単にスケジュールを予約できます。

最後まで読んで頂き、ありがとうございました。

他の分野へ移動できる全体ページへは下記リンクから移動できます。