第 27章cron によるタスクの自動化

システム管理者であれば、日常の定期的な作業を自動化して、管理タスクの手間を可能な限り省きたいと考えるでしょう。Turbolinux 10 Server には、同じ処理をスケジューリングするための機能として cron が実装されています。cron のデーモンである crond は、1 分毎に設定ファイルを参照し、設定されているジョブを定期的に実行します。なお、cron にはいくつかの亜種が存在し、オペレーティングシステムにより実装している種類が異なります。Turbolinux 10 Server が採用している cron は Vixie Cron と呼ばれているもので、亜種の代表的なものの 1 つです。この章では、cron の設定ファイルである /etc/crontab の記述方法や crontab コマンドの使用方法について解説します。

はじめに、crond デーモンが起動していることを確認しておきます。通常、crond はデフォルトで起動しています。

# /etc/init.d/crond status
crond (pid 954) is running...

running... と表示されれば crond は起動しています。起動していない場合は、以下のコマンドを実行して起動します。

# /etc/init.d/crond start

また、Turbolinux 10 Server の起動時に crond が起動するように chkconfig コマンドを実行しておきます。

# chkconfig crond on

27.1. 設定ファイル(/etc/crontab)の解説

cron の設定ファイルには、システムのジョブを実行するデフォルトの設定ファイルと各ユーザーのジョブを実行する設定ファイルがあります。ここでは、システムがデフォルトで提供している設定ファイルである /etc/crontab について解説します。各ユーザーの設定ファイルについては、項27.2 で解説します。

Turbolinux 10 Server の /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
03 */6 * * * root run-parts /etc/cron.quarter-daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

最初の 4 行は、環境変数の指定です。各変数の意味を以下に示します。

表 27-1.

SHELL使用するシェル
PATHコマンドの実行に使用するパス
MAILTO結果を通知するメールアドレス
HOMEコマンドが実行される際のディレクトリ

7 行目以降は、特定の時刻に起動するプログラムがあらかじめ設定されています。設定項目は、左から順に以下のようになっています。なお、run-parts は、パラメータに指定したディレクトリにあるコマンドやスクリプトを実行するスクリプトです。

表 27-2.

フィールドの位置(左から)フィールドの意味指定方法
10 から 59(例: */15)
20 から 23(例: 0-23)
30 から 31(例: 1-20)
41 から 12 または jan から dec(例: 1,6,12)
5曜日0 から 6 または sun から sat(例: 0-6)
6実行するユーザー 
7コマンド行 

日時などの指定には整数間にカンマ(,)やハイフン(-)を使用できます。カンマは続けて指定する場合に使用でき、ハイフンは範囲を指定できます。例えば、8-11 は、8、9、10、11 を表します。0-4,8-12 のようにハイフンとカンマの併用もできます。また、アスタリスク(*)も指定できます。アスタリスクは、すべてにマッチすることを意味します。例えば、時フィールドで * を指定した場合は毎時、日フィールドで指定した場合は毎日を意味します。

また、時フィールドで */2 のようにスラッシュ(/)を使用すると、2 時間おきとなります。月フィールドで 1-12/3 と指定した場合は、 1 月が最初の月でそのあとは、4 月、7 月、10 月となります。

したがって、Turbolinux 10 Server の /etc/crontab は標準で以下のように設定されていることが分かります。

ティップ

Turbolinux 10 Server がどのようなジョブを定期的に実行しているかは、各ディレクトリのスクリプトを参照してください。