構文
%LKROOT%\bin\sendevent -C class-of-event -E event -m monitor-name -nname-of-obj-inst [-s severity]
説明
イベント通知機能は、イベント通知機構 (%LKROOT%\bin\sendevent) とアプリケーション登録環境で構成されています。特定のイベントやアラーム、またはすべてのイベントとアラームをイベント通知機能から受信するアプリケーションは、「登録」する必要があります。
sendevent コマンドは、モニタが監視対象のオブジェクトからイベント (障害またはリカバリ) を検出した際に、デーモン監視プロセスから起動されるプログラムです。このコマンドは、一般ユーザやシステム管理者がシェル上で使用するのではなく、デーモンプロセスや別のコマンドによって起動されます。
sendevent コマンドは、イベント発生を登録済みアプリケーションに通知します。例えば、アプリケーションは、システムのシャットダウンを事前に通知されると、ファイルとデータを保存します。また、クライアントサーバ環境では、アプリケーションは別のサービスプロバイダを使用するようにそれ自身を再設定します。アプリケーションには、イベントを処理する適切なコマンドを実装する必要があります。
sendevent コマンドは、アプリケーションのイベント応答コマンドにすべてのオプションを渡します。
アプリケーションは、イベント応答コマンドを専用の登録ディレクトリ %LKROOT%\events にインストールして、イベントやアラーム通知を受信します。この作業は、アプリケーションのインストール時に実行します。 %LKROOT%\events に格納されるイベントは、イベントクラスに分類されます。アプリケーション側では、genclass (汎用イベント用) と allclass サブディレクトリを作成して、イベント発生通知の受信を登録します。
注記: アプリケーション応答コマンドを特定のイベントロケーションとすべてのロケーションの両方に配置すると、イベントが発生した際に、両方のスクリプトが実行されます。
クラスディレクトリには、そのクラスに属するイベントに対応するサブディレクトリがあります。イベントを監視し、イベント通知機構を使用するアドオンパッケージは、監視サポート対象のイベントを記録します。
アプリケーションオブジェクトモニタパッケージは、各サブディレクトリに配置した ACTIVE ファイルを保持する必要があります。ACTIVE ファイルが存在する場合、モニタが起動し、特定のイベントのオブジェクトを監視していることをアプリケーションに通知します。モニタプログラムを含むパッケージを削除すると、パッケージの削除スクリプトが監視対象イベントの ACTIVE ファイルを削除します。イベントを監視しないことをアプリケーションに通知します。パッケージを削除しても、イベント応答コマンドとイベントディレクトリは削除されません。
アプリケーションが別のアプリケーションの標準的なコマンドに依存する場合、アプリケーション登録環境は、アプリケーション用の別のアプリケーション固有のディレクトリ %LKROOT%\subsys\application-name\actions を提供し、「共有可能な」アクションコマンドを配置します。例えば、アプリケーション X がアプリケーション Y に依存しており、イベントリカバリ後に起動して実行するとします。この順番に従ってアプリケーションが起動しない場合、アプリケーション X は LKROOT%\subsys\Y\actions\start ディレクトリからアプリケーション Y の start コマンドを呼び出します。アプリケーション間の依存関係は、アプリケーション開発者が判断して指定します。
-C (イベントのクラス) 、_-E_ (イベント)、 -m (モニタ名)、 -n (オブジェクトインスタンス名) オプションは必須です。 -s (重大度) オプションを指定しないと、sendevent にはデフォルトで MAJOR アラームが設定されます。
監視プロセスが sendevent コマンドを起動すると、 sendevent は、 -C オプションと -E オプションの引数を参照して、イベントが発生したクラスを識別します。*sendevent* コマンドは、クラス / イベントに対応する登録ディレクトリにあるイベント応答コマンドとすべてのディレクトリに登録されたコマンドを完全に実行するまで、バックグラウンドで動作します。
指定可能なオプションは次のとおりです。
-C class-of-event
イベントはクラス別にグループ化されます。イベントが属するクラスを指定します。これは必須オプションです。
-E event
クラス内でトリガするイベントを指定します。必須オプションです。
-m monitor-name
アラーム/イベントを送信するアプリケーションオブジェクトモニタの名前は、次の形式で記述します。
OM-product-name:OM-component-name
OM-product-name には、最大 8 文字の ASCII 文字列を記述します。これは、アラームまたはイベントをトリガするオブジェクトを監視する製品の略称です。OM-component-name には、最大 16 文字の ASCII 文字列を記述します。これは、アラームまたはイベントを検出するオブジェクトモニタのコンポーネントを識別するオブジェクトモニタ名です。
モニタ名は、1 つのオブジェクトを監視する複数の製品を識別します。
-n name-of-obj-inst
アプリケーションオブジェクトのインスタンス名です。最大 64 文字の ASCII 文字列を記述します。例えば、D: はボリュームアプリケーションオブジェクトの名前を指すのに対して、1234 はプロセスオブジェクトを指すのに使用されます。
-s severity
各アラームとイベントには、報告する問題の重大度を指定します。このオプションを指定しないと、 sendevent はデフォルトの重大度 (MAJOR アラーム) を使用します。重大度は、次表に示すように、整数 (ASCII 文字) で指定します。
0 | CLEARED アラーム: 「id-of-alarm/event」が検出したアラーム |
1 | INFORMATIONAL アラーム: INFO メッセージまたは cmn_err () NOTICE メッセージ |
2 | WARNING アラーム: 警告メッセージ |
3 | MINOR アラーム: 重大度の低いマイナーメッセージ |
4 | MAJOR アラーム: メジャーメッセージまたはエラーメッセージ (デフォルト) |
5 | CRITICAL アラーム: 深刻なエラーを伝えるメッセージ (cmn_err () PANIC または HALT メッセージ) |
出力
sendevent コマンドは、次のいずれかの条件で出力を生成します。
- エラーメッセージが標準エラーに出力されるか、0 以外の終了コードが返った場合
- sendevent を呼び出した際に、id-of-alarm/event アラーム/イベントの識別子が標準出力に出力された場合
終了コード
sendevent は、次の終了コードを返します。
0 | sendevent コマンドはエラーを出力せずに、処理を正常に完了した。 |
1 | 引数リストに構文エラーがある。 |
2 | -C オプションで指定されたクラスが %LKROOT%\events ディレクトリにない。 |
---|---|
3 | -E オプションで指定した文字列に対応するイベントが %LKROOT%\events\<class>ディレクトリにない。 |
4 | -A オプションは内部的に生成され、直接指定することはできない。 |
5 | -s 0 (重大度: CLEARED) オプションを使用する場合は、_-i_ オプションを指定する必要がある。 |
このトピックへフィードバック