以降の各項で、crontab ファイルをどのように作成、編集、表示、削除するか、さらに、それらのファイルへのアクセスをどのように制御するかを説明します。
cron デーモンは、各 crontab ファイル内にあるコマンドに従ってシステムイベントをスケジュールします。crontab ファイルには、それぞれ一定間隔で実行されるコマンドが 1 行に 1 つずつ入っています。各行の先頭は cron デーモンが各コマンドを実行する日時情報です。
たとえば、SunOS ソフトウェアのインストール時に root という名前の crontab ファイルが提供されますが、このファイルの内容は次のとおりです。
10 3 * * 0,4 /etc/cron.d/logchecker 10 3 * * 0 /usr/lib/newsyslog 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean |
最初のコマンド行は、日曜日と木曜日の午前 3 時 10 分に logchecker を実行するようシステムに指示します。2 番目のコマンド行は、毎日曜日の午前 3 時 10 分に newsyslog を実行するようにシステムをスケジュールします。3 番目のコマンド行は毎日曜日午前 3 時 15 分に nfsfind を実行するようにシステムに指示します。4 番目のコマンド行は、毎日夏時間をチェックして、必要であれば修正するようにシステムに指示します。RTC タイムゾーンも /etc/rtc_config ファイルもない場合、このエントリは何もしません。 5 番目のコマンド行では、Generic Security Service テーブル /etc/gss/gsscred_db に重複エントリがないかどうかを調べ、あれば削除します。
crontab ファイル内のコマンド行の構文の詳細は、「crontab ファイルエントリの構文」を参照してください。
crontab ファイルは /var/spool/cron/crontabs) に格納されます。SunOS ソフトウェアのインストール時には、root 以外にもいくつかの crontab ファイルが提供されます (表 30-2 を参照してください)。
表 30-2 デフォルトの crontab ファイル
crontab ファイル |
機能 |
---|---|
adm |
アカウンティング |
lp |
印刷 |
root |
一般的なシステム機能とファイルシステムの整理 |
sys |
性能情報の収集 |
uucp |
一般的な uucp の整理 |
デフォルトの crontab ファイルの他に、ユーザーは crontab ファイルを作成してユーザー自身のシステムイベントをスケジュールできます。
その他の crontab ファイルは、それらの中に作成されるユーザーのアカウントに基づいて、bob、mary、smith、jones などのように命名されます。
root または他のユーザーが所有する crontab ファイルにアクセスするには、スーパーユーザーの特権が必要です。
crontab ファイルを作成、編集、表示、削除する手順については、「システムイベントのスケジューリング用コマンド」で説明します。
cron デーモンは crontab コマンドの自動スケジューリングを行います。このデーモンの機能は、通常 15 分おきに、/var/spool/cron/crontabs を調べて crontab ファイルがないか確認します。新しい crontab ファイルがないか、または既存の crontab が変更されていないかを確認し、いずれかがあった場合は、ファイル内のリストから実行時刻を読み取り、コマンドが正しい時刻に実行されるよう指示します。
ほとんど同様に、cron デーモンは /var/spool/cron/atjobs ディレクトリ内の at ファイルのスケジューリングを制御します。
crontab ファイルは、1 行に 1 つのコマンドが入った構成になっています。これらのコマンド行の最初の 5 つのフィールドには、コマンドが実行される時刻を指定し、それぞれスペースで区切ります。表 30-3 にこれら 5 つのフィールドを示します。
表 30-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 が 2 番目以降のキャリッジリターンを認識しないからです。(つまり、複数行とした場合は、同じコマンドとはみなされないということです。) crontab のエントリとコマンドオプションの詳細は、crontab(1) のマニュアルページを参照してください。