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