自動的に実行するシステムタスクを多数設定できます。これらのタスクには、定期的に発生するものと特定の期間のみ発生するものがあります。夜間や週末などのピーク時間外に 1 回だけ実行する必要があるタスクもあります。
このセクションには、Oracle Solaris サービス管理機能 (SMF)、crontab コマンド、または at コマンドを使用したシステムタスクのスケジュールの概要情報が記載されています。それぞれに、使用するべき主な機能があります。通常、SMF は、リソースモニタリングのためのより単純なスケジューリングメカニズムを提供しますが、cron のようなスケジューリング機能を備えています。SMF を使用して、定期的なサービスとスケジュールされているサービスの両方を設定できます。SMF の定期的なサービスは、指定された時間の枠または「間隔」内にルーチンタスクを実行します。スケジュールされている SMF サービスは常に、割り当てられた開始時間に従って実行されます。繰り返されるジョブまたはルーチンジョブを (特定の開始時間に) 実行するには、crontab コマンドを使用します。単一のジョブをスケジュールするか、タスクを 1 回 (特定の時間に) 実行するには、at コマンドを使用します。
次の表は、SMF、crontab コマンド、at コマンド、およびこれらの関数のファイルまたはプロパティーをまとめたものです。
|
Solaris サービス管理機能 (SMF) を使用して、実行中のアプリケーションまたはサービスを管理できます。サービスは、サービスとインスタンスオブジェクトおよびその構成設定によって SMF フレームワークで表されます。ローカルの Oracle Solaris インスタンスの構成は localhost スコープと呼ばれ、これが現在サポートされている唯一のスコープです。詳細は、smf(5) のマニュアルページを参照してください。
システムによるルーチン保守タスクを一定間隔で実行するために役立つ SMF サービスは、periodic サービスまたは scheduled サービスと呼ばれます。スケジュールされているサービスは、定期的なサービスのタイプの 1 つで、特定の時間に発生します。場合によっては実行されるタスクや、特定のスケジュール (ピーク時間外など) で実行されるタスクには、スケジュールされているサービスを使用します。スケジュールされているサービスの詳細は、Oracle Solaris 11.3 でのシステムサービスの開発 の 第 4 章, 特定のスケジュールで実行するサービスの作成を参照してください。
また定期的なサービスでは、最後の実行に相対的な時間に起動メソッドを開始します。これは、より頻繁に、またはより定期的に発生する保守タスクに使用されます。SMF では、定期的なサービスは、委任されたリスタータ svc:/system/svc/periodic-restarter によって管理されます。このリスタータは、管理するインスタンスの開始メソッドのみを実行します。つまり、スケジュールされているタスクは、そのインスタンスがオンラインになっている期間の指定された間隔にのみ開始されます。定期的なサービスの詳細は、Oracle Solaris 11.3 でのシステムサービスの開発 の 第 3 章, 定期的に実行するサービスの作成を参照してください。
SMF を使用してタスクをスケジュールする利点は、次のとおりです。
失敗したサービスは、依存関係の順序で自動的に再起動されます (一方、cron は通常それ自体を再起動しません)
サービスはオペレーティングシステムと適切に統合され、依存関係で簡単に制御できます
サービスの問題をデバッグして、スケジュールされているサービスがなぜ、どのように失敗したかを詳細に示したレポートを作成します
(必要な) IPS パッケージソフトウェアが実行されている場合にのみタスクが実行されるようにします
スケジュールされているタスクを削除するための追加の手順は不要です (IPS パッケージで自動的にアンインストールされます)
プロパティーを変更してサービスを管理できる (cron では不可能) root 以外のユーザーにタスクを委任します
異なるタイムゾーンと設定で複数のユーザーを管理します
SMF タスクをスケジュールする手順については、SMF を使用した繰り返されるシステムタスクのスケジューリングを参照してください。
cron は、指定された日付と時間にコマンドを実行するプロセスを実行します。SMF とは異なり、これは、独自のプロセス初期化フェーズ中または 2 つのコマンドの実行時に、crontab または at コマンドファイルのみを調べます。定期的にスケジュールされた間隔では新しいファイルや変更されたファイルの有無をチェックしません。
crontab ファイルにある指示に従って、定期的にスケジュールされたコマンドを cron に指定できます。ユーザーは、crontab コマンドを使用して独自のシステムタスクを cron で送信できます。root アクセスは SMF 用であるため、必要ありません。また、crontab コマンドを使用すると、複数回実行する必要があるタスクをスケジュールできますが、at コマンドでは 1 回かぎりの実行だけが可能です。cron が終了することはないため、一度だけ実行してください。
crontab ジョブをスケジュールする手順については、crontab ファイルを作成または編集する方法を参照してください。
at コマンドを使用すると、1 回かぎりのタスクまたはまれにしか発生しないタスクを特定の時間に実行するようにスケジュールできます。ジョブは 1 つのコマンドやスクリプトで構成されます。
crontab と同様に、at コマンドでは、システムタスクの自動実行をスケジュールできます。ただし、crontab ファイルとは異なり、at ファイルはタスクを 1 回だけ実行します。その後はディレクトリから削除されます。したがって、at コマンドが役立つのは、単純なコマンドまたはスクリプトを実行して、別ファイルに書き出した出力をあとから調べるような場合です。
at ジョブの実行を指定するには、コマンドを入力してから、at コマンド構文に従ってオプションで実行時間を指定してください。at ジョブの実行の詳細は、at ジョブファイルの送信を参照してください。
at コマンドは、実行したコマンドまたはスクリプトを、現在の環境変数のコピーとともに /var/spool/cron/atjobs ディレクトリに格納します。at ジョブのファイル名は、at 待ち行列の場所を指定する長い数値と、.a 拡張子から構成されます (例: 793962000.a)。
cron デーモンは、起動時に at ジョブをチェックし、新しく実行されるジョブを待機します。cron デーモンが at ジョブを実行すると、atjobs ディレクトリから at ジョブのファイルが削除されます。詳細は、at(1) のマニュアルページを参照してください。
at ジョブをスケジュールする手順については、at ジョブを作成する方法を参照してください。
毎日、毎週、または毎月実行するルーチンシステム管理タスクをスケジュールできます。タスクの要件または割り当てられているアクセス制御権利に応じて、前述のスケジューリングツールの 1 つを Solaris で使用できます。
毎日のシステム管理タスクには、次のようなものがあります。
作成後、数日以上経過したファイルを一時ディレクトリから削除する
アカウンティングサマリーコマンドを実行する
df コマンドおよび ps コマンドを使用してシステムのスナップショットを取る
日常のセキュリティーモニタリングを実行する
システムのバックアップを実行する
毎週のシステム管理タスクには、次のようなものがあります。
man -k コマンドで処理する catman データベースを再構築する
fsck -n コマンドを実行してディスク問題があれば表示する
毎月のシステム管理タスクには、次のようなものがあります。
指定月に使用されなかったファイルをリストする
月次アカウンティングレポートを生成する
さらに、リマインダの送信やバックアップファイルの削除など、ほかのルーチンシステムタスクをスケジュールできます。