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 事件处理程序的管理性前端。You can also restart the sysevent daemon by use of the restart command. syseventadm can only be run by a user with a uid of 0 or the System Event Management rights profile.
syseventadm add 命令可为由供应商、发布者或类中至少一项指定的 sysevent 事件添加处理程序。如果指定 class,可以通过 sub-class 对其进行限定。只会将添加处理程序时为 vendor、publisher、class 和 sub-class 指定的值与 sysevent 事件进行匹配,以确定指定值是否与事件匹配以及是否应运行处理程序。path 是响应匹配事件而运行的命令的全路径名,带有可选参数 (args)。如果指定用户名,则以用户 username 的身份调用该命令,否则以 root 用户身份调用该命令。
syseventadm remove 命令可删除匹配的 sysevent 事件指定的处理程序。Event specifications may be matched by specifying at least one of vendor, publisher, class, username or path.如果指定 class,可以通过 sub-class 对其进行限定。Any of vendor, publisher, class, sub-class, username, path or args not specified match the corresponding fields of all events.所有匹配指定的处理程序都将被删除。
The syseventadm list command lists the handlers for matching sysevent event specifications using the same match criteria as the remove command but without the requirement that at least one of vendor, publisher, class, username or path be specified.不指定匹配条件时,将列出所有指定。The list command output format is: [vendor=vendor] [publisher=publisher] [class=class] [subclass=subclass] [username=username] path [args] where each of class, sub-class, vendor, publisher and username is listed only if part of the match criteria for the listed specification is present.
在通过添加或删除一个或多个 sysevent 处理程序指定而做了更改后,syseventadm restart 命令通知 syseventd 守护进程重新读取 sysevent 注册表。
sysevent 处理工具提供大量宏功能,用于构造为响应事件而执行的命令行参数。宏扩展仅适用于为事件处理程序指定的命令行 args,扩展宏时使用的数据来自事件本身。系统为事件的 class、subclass、publisher 和 vendor 信息提供了预定义的宏。如果宏与预定义的宏名称之一不匹配,将搜索附加到事件的属性列表以查找使用该名称的属性,并在命令行上替换匹配属性的值。
宏由 $ 字符引入,宏名称为由空格或制表符字符分隔的以下标记。如果宏名称嵌入到文本中,可由 ${ 和 } 将其标识出来。A \ before the $ causes macro expansion not to occur.
定义事件的类字符串
定义事件的发布者字符串
事件的序列号
定义事件的子类字符串
事件的时间戳
定义事件的供应商字符串
不在预定义范围内的宏名称将与随事件提供的属性列表进行比较。属性的名称与宏名称匹配时,在生成的命令行上将使用 ASCII 文本替换该属性的值。
如果没有为使用的宏定义同名属性或提供了多个同名的属性,将发生错误,不会调用该命令。
具有带符号数据类型(DATA_TYPE_INT16、DATA_TYPE_INT32 和 DATA_TYPE_INT64)的属性将扩展为十进制数字。
具有无符号数据类型(DATA_TYPE_BYTE、DATA_TYPE_UINT16、DATA_TYPE_UINT32、DATA_TYPE_UINT64 和 DATA_TYPE_HTTIME)的属性将扩展为带 0x 前缀的十六进制数字。
具有字符串数据类型 (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,参数是从事件属性中得到的类名称、子类名称和路径名。$ 字符前面有一个反斜杠,以规避 shell 解释。由于注册表在 $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 命令)。
命令用法不正确。
权限被拒绝。
Command failed.
Out of memory.
有关下列属性的说明,请参见 attributes(7):
|
sysevent_post_event(3SYSEVENT), attributes(7), syseventd(8), ddi_log_sysevent(9F)
为避免升级问题,提供 sysevent 事件处理程序的软件包应从软件包的安装后脚本运行 syseventadm 来安装事件处理程序。然后,可以使用添加时所用的相同参数从软件包的删除前脚本运行 syseventadm 来删除事件处理程序。