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