Solaris のシステム管理 (上級編)

繰り返されるシステムタスクのスケジューリング (cron)

以降の各項で、crontab ファイルをどのように作成、編集、表示、削除するか、さらに、それらのファイルの使用をどのように制御するかを説明します。

crontab ファイルの内容

cron デーモンは、各 crontab ファイル内にあるコマンドに従ってシステムタスクをスケジュールします。crontab ファイルには、それぞれ一定間隔で実行されるコマンドが 1 行に 1 つずつ入っています。各行の先頭は cron デーモンが各コマンドを実行する日時情報です。

たとえば、SunOS ソフトウェアのインストール時に root という名前の crontab ファイルが提供されます。このファイルの内容には、次のコマンド行が含まれています。


10 3 * * * /usr/sbin/logadm (1)
15 3 * * 0 /usr/lib/fs/nfs/nfsfind (2)
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 (3)
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean (4)

これらのコマンド行の出力について次に説明します。

crontab ファイル内のコマンド行の構文の詳細は、crontab ファイルエントリの構文」を参照してください。

crontab ファイルは /var/spool/cron/crontabs ディレクトリに保存されます。SunOS ソフトウェアのインストール時には、root 以外にもいくつかの crontab ファイルが提供されます。次の表を参照してください。

表 8–2 デフォルトの crontab ファイル

crontab ファイル

機能 

adm

アカウンティング 

lp

印刷 

root

一般的なシステム機能とファイルシステムの整理 

sys

パフォーマンスデータの収集 

uucp

一般的な uucp の整理

デフォルトの crontab ファイルの他に、ユーザーは crontab ファイルを作成してユーザー自身のシステムタスクをスケジュールできます。その他の crontab ファイルは、作成したユーザーのアカウントに基づいて、bobmarysmithjones などのように命名されます。

root またはほかのユーザーの crontab ファイルを使用するには、スーパーユーザーの特権が必要です。

crontab ファイルの作成、編集、表示、削除の手順については、以降の節で説明します。

cron デーモンのスケジューリング管理

cron デーモンは、crontab コマンドの自動スケジューリングを管理します。cron デーモンは、/var/spool/cron/crontab ディレクトリに crontab ファイルがあるかどうかをチェックします。

cron デーモンは、起動時に次のタスクを実行します。

ほとんど同様に、cron デーモンは at ファイルのスケジューリングを制御します。これらのファイルは /var/spool/cron/atjobs ディレクトリに格納されています。 cron デーモンは、実行された at ジョブに関する crontab コマンドからの通知も待機します。

crontab ファイルエントリの構文

crontab ファイルは、1 行に 1 つのコマンドが入っており、各コマンド行の最初の 5 つのフィールドでは、コマンドが実行される時刻を指定します。これら 5 つのフィールドを、次の表で説明します。これらのフィールドはスペース (空白) で区切られます。

表 8–3 crontab 時刻フィールドの値

時刻フィールド 

値 

分  

0-59 

時 

0-23 

日 

1-31 

月 

1-12 

曜日 

0 - 6 (0 は日曜日) 

次に、crontab 時刻フィールドで特殊文字を使用する際のガイドラインを示します。

たとえば、次の crontab コマンドエントリは、毎月 1 日と 15 日の午後 4 時に、ユーザーのコンソールウィンドウに注意を促すメッセージを表示します。


0 16 1,15 * * echo Timesheets Due > /dev/console

crontab ファイル内の各コマンドは、長くても 1 行内に入れる必要があります。crontab ファイルは余分なキャリッジリターンを認識しません。crontab のエントリとコマンドオプションの詳細は、crontab(1) のマニュアルページを参照してください。