5-1. ジョブスケジューラー
ジョブスケジューラーによるバックアップの採取 Linuxのスケジューラーは、指定された日付や時刻に自動的にジョブを実行するような設定が可能です。システム管理者はタスクの自動化によって、定期的にバックアップを実行するなどが可能になります。
ジョブを特定の日時で繰り返し実行させるcron について解説します。
cronデーモンの起動と停止 cronを使用するには、cronの実体であるデーモンcrond を起動する必要があります。
crond の起動/停止スクリプトは/etc/rc.d/init.d/crond となっています。起動スクリプトのオプションでは、起動(start)、停止(stop)、再起動(restart)、現在の状況を確認(status)を指定できます。
crondの再起動
# /sbin/service crond restart
5-2. cronの設定ファイル
cronの設定ファイル【1】
- /var/spool/cron/ユーザー名
- /etc/crontab
- /etc/cron.d
- /etc/cron.hourly/
- /etc/cron.daily/
- /etc/cron.weekly/
- /etc/cron.monthly/
crondは毎分cron設定ファイルに変更がないかをチェックし、変更があった場合には変更を反映させる
cronの設定ファイル【2】 /var/spool/cron/ユーザー名
/var/spool/cron/ユーザー名
# /usr/bin/crontab -u root -e
例では/var/spool/cron/rootファイルが作成され、viで編集することができます。
このファイルに、いつ、もしくはどれくらいの間隔で指定したコマンドを実施するか記述します。
crontabファイルの書式
分 時 日 月 曜日 コマンド
- 分 — 0~59
- 時 — 0~23
- 日— 1~31
- 月— 1~12
- 曜日— 0(日曜)~6(土曜)
複数の値を指定する場合は「,」、間隔を指定する場合は「/」、範囲を指定する場合は「-」を使います。
毎日23:30にバックアップを実行
30 23 * * * /usr/bin/find /home | /bin/afio -ovZ -L
/tmp/full.log /dev/nst0
10分ごとにバックアップを実行
*/10 * * * * /usr/bin/find /home | /bin/afio -ovZ -L
/tmp/full.log /dev/nst0
9時、11時、13時、15時、17時のそれぞれ0分、15分、30分、45分にバックアップを実行
0,15,30,45 9-17/2 * * * /usr/bin/find /home | /bin/afio -ovZ -L
/tmp/full.log /dev/nst0
cronの設定ファイル【3】 /etc/crontab他
- /システム用に設定できるファイル(rootユーザーのみ)
- /etc/crontab
- ジョブスケジュールのメイン設定ファイル
このファイルには、「cron.monthly」、「cron.weekly」、「cron.daily」、「cron.hourly」配下のファイルを指定時に実行する指示が記述
/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin ←あらかじめ設定されている部分
MAILTO=root (ここから)
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly ←(ここまで)
↓ユーザー名
* */12 * * * root etc/cron.hourly/backup ←新たに追加
構文はcrontabコマンドの構文と似ていて、「曜日」と「コマンド」の間に「ユーザー」が入るだけです。
また、環境変数MAILTOで指示されたメールアドレスに対して、実行結果をメールで送ります。MAILTOがない場合は、ファイルの所有者にメールが送 られます。メールを受け取りたくない場合には、MAILTO=‘’ または MAILTO=“” と指定することで受け取らないように設定できます。
/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly これらのディレクトリ配下のファイルは、/etc/crontabファイルによって呼び出されて、指定された時間にジョブを実行します。ディレクトリ配下のファイルはいずれもシェルスクリプトである必要があります。
(例)/etc/crontabファイルで新たに追加した
「 * */12 * * * root etc/cron.hourly/backup 」部分の「/etc/cron.hourly/backup」ファイルで設定した内容
/usr/bin/find /home | /bin/afio -ovZ -L /tmp/full.log
/dev/nst0
この場合、/etc/crontabファイルで呼び出された「/etc/cron.hourly/backup」ファイル内のafioコマンドを12時間ごとに実施することになります。
/etc/cron.d cronタスクを毎時間、毎日、毎週、毎月以外の予定で実行する必要がある場合は、そのスクリプトをこのディレクトリに追加できます。このディレクトリ内のファイルの構文はすべて/etc/crontabと同じです。