syseventadm - sysevent イベント指定の管理
syseventadm add [-R rootdir] [-v vendor] [-p publisher] [-c class] [-s subclass] [-u username] path [args]
syseventadm remove [-R rootdir] [-v vendor] [-p publisher] [-c class] [-s subclass] [-u username] [path [args]]
syseventadm list [-R rootdir] [-v vendor] [-p publisher] [-c class] [-s subclass] [-u username] [path [args]]
syseventadm restart
syseventadm コマンドは、sysevent イベントハンドラの追加、削除、および一覧表示を行う管理フロントエンドです。sysevent デーモンは restart コマンドを使って再起動することもできます。syseventadm は root でのみ実行できます。
syseventadm add コマンドは、ベンダー、発行元、またはクラスの少なくとも 1 つによって指定された sysevent イベントのハンドラを追加します。class を指定する場合は、それを sub-class で修飾できます。ハンドラを追加する場合、vendor、publisher、class、および sub-class に指定された値のみが sysevent イベントと照合されて、その指定がイベントと一致し、ハンドラを実行すべきかどうかが判定されます。path は、一致するイベントに応答して実行されるコマンドのフルパス名であり、省略可能な引数 (args) を指定することもできます。ユーザー名を指定した場合、このコマンドはユーザー username として呼び出され、それ以外の場合は root として呼び出されます。
syseventadm remove コマンドは、一致する sysevent イベント指定のハンドラを削除します。イベント指定を一致させるには、vendor、publisher、class、username、または path の少なくとも 1 つを指定します。class を指定する場合は、それを sub-class で修飾できます。vendor、publisher、class、sub-class、username、path、または args のいずれかが指定されていない場合は、すべてのイベントの対応するフィールドが一致します。一致するすべての指定のハンドラが削除されます。
syseventadm list コマンドは、vendor、publisher、class、username、または path の少なくとも 1 つを指定するという要件がないこと以外は remove コマンドと同じ一致条件を使用して、一致する sysevent イベント指定のハンドラを一覧表示します。一致条件がない場合は、すべての指定が一覧表示されます。list コマンド出力の形式は: [vendor=vendor] [publisher= publisher] [class=class] [subclass=subclass] [username=username] path [args] であり、それぞれの class、sub-class、vendor、publisher、および username が表示されるのは、それが一覧表示された指定の一致条件の一部である場合のみです。
syseventadm restart コマンドは、1 つ以上の sysevent ハンドラの指定を追加または削除することによって変更が行われたあとで sysevent レジストリを再読み取りするように syseventd デーモンに通知します。
sysevent ハンドラ機能は、イベントに応答して実行されるコマンド行引数を構築するための拡張マクロ機能を備えています。マクロ展開はイベントハンドラに指定されたコマンド行の args にのみ適用され、マクロはイベントそのものからのデータで展開されます。イベントの class、subclass、publisher、および vendor 情報には定義済みのマクロが用意されています。マクロが定義済みのマクロ名のいずれとも一致しないと、イベントに付属している属性リストでその名前の属性が検索され、一致した属性の値がコマンド行で置換されます。
マクロは $ 文字によって取り込まれ、マクロ名はスペースまたはタブ文字で区切られた次のトークンになります。マクロ名がテキストに埋め込まれている場合は、${ および } によって表すことができます。$ の前に \ があると、マクロ展開は行われません。
イベントを定義するクラス文字列
イベントを定義する発行元文字列
イベントのシーケンス番号。
イベントを定義するサブクラス文字列
イベントのタイムスタンプ。
イベントを定義するベンダー文字列
それらの定義済み以外のマクロ名は、イベントに付属の属性リストと比較されます。マクロ名と一致する名前の属性があると、生成されたコマンド行でその属性の値が ASCII テキストとして置換されます。
その名前の属性が定義されていないか、またはその名前の属性が複数指定されているマクロを使用すると、エラーが発生し、コマンドは呼び出されません。
符号付きデータ型 (DATA_TYPE_INT16、DATA_TYPE_INT32、および DATA_TYPE_INT64) を持つ属性は 10 進数として展開されます。
符号なしデータ型 (DATA_TYPE_BYTE、DATA_TYPE_UINT16、DATA_TYPE_UINT32、DATA_TYPE_UINT64、および DATA_TYPE_HTTIME) を持つ属性は、接頭辞 0x の付いた 16 進数として展開されます。
文字列データ型 (DATA_TYPE_STRING) を持つ属性は文字列データとして展開されます。このデータに引用符は付きません。引用符付きの文字列がコマンド行で生成される必要がある場合は、引数内のマクロ呼び出しの周りに引用符を付けます。
配列型は、各要素がそのスカラー型に定義されたとおりに展開され、各要素の置換がスペースで区切られて展開されます。
add、list、および remove サブコマンドは、次のオプションをサポートしています。
イベントクラス class を指定します。
イベント発行元 publisher を指定します。
代替ルートパス rootdir を指定します。
イベントサブクラス subclass を指定します。
そのコマンドを呼び出すユーザー名 (username) を指定します。
そのイベントを定義するベンダー (vendor) を指定します。サードパーティーのソフトウェアによって定義されたイベントでは、vendor として企業の銘柄記号が指定されます。Oracle によって定義されたイベントでは SUNW を使用します。
add、list、および remove サブコマンドは、次のオプションをサポートしています。
コマンド引数
イベントに応答して実行されるコマンドのフルパス
次の例では、ベンダー MYCO (「My Company」)、クラス EC_ENV、およびサブクラス ESC_ENV_TEMP によって定義されたイベントのイベントハンドラを追加します。実行されるコマンドは /opt/MYCOenv/bin/ec_env_temp であり、引数はイベント属性から得られたクラス名、サブクラス名、およびパス名です。シェルの解釈を回避するために $ 文字の前にバックスラッシュが付いています。レジストリが $ALTROOT で維持されるため、変更後にサービスを再起動する必要はありません。
# syseventadm add -R \ALTROOT -v MYCO -c EC_ENV -s ESC_ENV_TEMP \ /opt/MYCOenv/bin/ec_env_temp \$class \$subclass \$pathname
上記の –R オプションの説明に記載されている、そのオプションの使用に関する警告に注意してください。
使用例 2 イベントハンドラの削除次の例では、例 1 で追加したイベントハンドラを削除します。
# syseventadm remove -R \ALTROOT -v MYCO -c EC_ENV -s ESC_ENV_TEMP \ /opt/MYCOenv/bin/ec_env_temp \class} \subclass} \pathname}
上記の –R オプションの説明に記載されている、そのオプションの使用に関する警告に注意してください。
使用例 3 イベントハンドラの一覧表示次の例では、ベンダー MYCO によって定義されたとおりに、クラス EC_ENV、サブクラス ESC_ENV_TEMP のイベントのすべてのイベントハンドラを一覧表示します。
# syseventadm list -v MYCO -c EC_ENV -s ESC_ENV_TEMP \ vendor=MYCO class=EC_ENV subclass=ESC_ENV_TEMP \ /opt/MYCOenv/bin/ec_env_temp \${class} \${subclass} \${pathname}使用例 4 イベントハンドラの一覧表示
次の例では、ベンダー VRTS によって定義されたすべてのイベントハンドラを一覧表示します。
# syseventadm list -v VRTS使用例 5 イベントハンドラの削除
次の例では、ベンダー VRTS によって定義されたすべてのイベントハンドラを削除し、サービスを再起動します。
# syseventadm remove -v VRTS # syseventadm restart使用例 6 コマンドの実行用に指定したすべてのイベントハンドラの一覧表示
次の例では、コマンド /opt/MYCOenv/bin/ec_env_temp の実行用に指定したすべてのイベントハンドラを一覧表示します。
# syseventadm list /opt/MYCOenv/bin/ec_env_temp使用例 7 イベントハンドラの削除とサービスの再起動
次の例では、コマンド /opt/MYCOenv/bin/ec_env_temp の実行用に指定したすべてのイベントハンドラを削除し、サービスを再起動します。
# syseventadm remove /opt/MYCOenv/bin/ec_env_temp # syseventadm restart
次の終了ステータスが返されます。
正常終了。
一致するイベント指定が見つかりません (remove または list コマンドのみ)。
コマンドの使用法が正しくありません。
アクセス権が拒否されました。
コマンドが失敗しました。
メモリーが不足しています。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
syseventd(1M), sysevent_post_event(3SYSEVENT), attributes(5), ddi_log_sysevent(9F)
アップグレードの問題を回避するには、パッケージのポストインストールスクリプトから syseventadm を実行することで、sysevent イベントハンドラを配信するパッケージによってイベントハンドラがインストールされるようにしてください。その後、追加時と同じ引数を使用してパッケージの削除前スクリプトから syseventadm を実行することでそのイベントハンドラを削除できます。