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

システムタスクを自動的に実行する方法

たくさんのシステムタスクを設定して、自動的に実行することができます。 これらのタスクの中には、定期的な実行が必要になる作業があります。また、夜間や週末などの就業時間外に 1 回だけ実行する作業もあります。

この節では、 crontabat という 2 つのコマンドについて概説します。これらのコマンドを使用すると、定型作業をスケジュールして、自動的に実行することができます。 crontab は、繰り返し実行するコマンドをスケジュールします。 at コマンドは、1 回だけ実行するタスクをスケジュールします。

次の表は、crontab コマンドと at コマンド、これらのコマンドの使用を制御できるファイルをまとめたものです。

表 18–1 システムタスクのスケジューリング用コマンド

コマンド 

スケジューリングの対象 

ファイルの格納場所 

制御ファイル 

crontab

一定間隔で実行する複数のシステムタスク 

/var/spool/cron/crontabs

/etc/cron.d/cron.allow

/etc/cron.d/cron.deny

at

1 つのシステムタスク 

/var/spool/cron/atjobs

/etc/cron.d/at.deny

Solaris 管理コンソールのスケジュールされたジョブツールを使用して、定型作業をスケジュールすることもできます。Solaris 管理コンソールの使用と起動の方法については、『Solaris のシステム管理 (基本編)』の「Solaris Management Console の操作 (手順)」を参照してください。

繰り返されるジョブのスケジューリング (crontab)

定型的なシステム管理タスクは、crontab コマンドを使用して、毎日、毎週、または毎月それぞれ 1 回ずつ実行するようにスケジュールできます。

毎日 1 回の crontab によるシステム管理作業には、次のようなものがあります。

毎週 1 回の crontab システム管理作業には、次のようなものがあります。

毎月 1 回の crontab システム管理作業には、次のようなものがあります。

上記に加えて、連絡事項の通知の転送やバックアップファイルの削除や、さらに他の定型的システム作業を実行するように crontab コマンドをスケジュールすることもできます。

crontab ジョブをスケジューリングする手順については、crontab ファイルを作成または編集する方法を参照してください。

1 つのジョブのスケジューリング (at)

特定の 1 つのジョブを後で実行するように at コマンドを使用してスケジュールできます。ジョブは 1 つのコマンドやスクリプトで構成されます。

crontab コマンドと同様に、at コマンドは定型作業の自動実行をスケジュールします。しかし、crontab ファイルとは異なり、at ファイルはそれぞれのタスクを 1 回実行して、その後はディレクトリから削除されてしまいます。したがって、at はそれぞれ単純なコマンドまたはスクリプトを実行して、後で調べることができるようにそれらの出力を別々のファイルに送るように使用するのが最も効果的です。

at ジョブの実行を指定するには、単にコマンド構文に従って at オプションで実行時刻を指定してください。at ジョブの実行を指定する方法についての詳細は、at コマンドの説明を参照してください。

at コマンドは、入力されたコマンドまたはスクリプトを、現在の環境変数のコピーと一緒に /var/spool/cron/atjobs ディレクトリに格納します。作成された at ジョブには、ファイル名として、at 待ち行列内での位置を指定する長い数値と .a 拡張子からなる、たとえば 793962000.a のような文字列が与えられます。

cron デーモンは、通常 15 分間隔で定期的に atrun プログラムを実行します。 atrun プログラムは、スケジュールされた時間に at ジョブを実行します。cron デーモンが at ジョブを実行すると、at ジョブのファイルが atjobs ディレクトリから削除されます。

at ジョブをスケジューリングする手順については、at ジョブを作成する方法を参照してください。