Oracle® Solaris 11.2 でのシステム情報、プロセス、およびパフォーマンスの管理

印刷ビューの終了

更新: 2014 年 9 月
 
 

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

以降のセクションで、crontab ファイルの作成、編集、表示、削除する方法と、それらのファイルの使用を制御する方法を説明します。

crontab ファイルの内容

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

たとえば、Oracle Solaris ソフトウェアのインストール時に 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 ファイルもない場合、このエントリは何もしません。


    x86 only -  /usr/sbin/rtc スクリプトは、x86 ベースのシステムでのみ実行できます。
  • 4 行目は、毎日午前 3 時 30 分に Generic Security Service テーブル /etc/gss/gsscred_db の重複エントリをチェック (重複エントリがある場合は削除) します。

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

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

adm

アカウンティング

root

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

sys

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

uucp

一般的な uucp の整理

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

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

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

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

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

  • 新しい crontab ファイルがないかを確認する

  • ファイル内のリストから実行時間を読み取る

  • 正しい時間にコマンドを実行する

  • 更新された crontab ファイルに関する crontab コマンドからの通知を待機する

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

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

crontab ファイルは、1 行に 1 つのコマンドが入っており、各コマンド行の最初の 5 つのフィールド (スペースで区切られている) で指定された時間で、コマンドを自動的に実行します。

表 4-2  指定できる 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) のマニュアルページを参照してください。