跳过导航链接 | |
退出打印视图 | |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11.1 Information Library (简体中文) |
- 管理 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 事件处理程序的管理性前端。您还可以通过使用 restart 命令来重新启动 sysevent 守护进程。syseventadm 只能由 root 用户运行。
syseventadm add 命令可为由供应商、发布者或类中至少一项指定的 sysevent 事件添加处理程序。如果指定 class,可以通过 sub-class 对其进行限定。只会将添加处理程序时为 vendor、publisher、class 和 sub-class 指定的值与 sysevent 事件进行匹配,以确定指定值是否与事件匹配以及是否应运行处理程序。path 是响应匹配事件而运行的命令的全路径名,带有可选参数 (args)。如果指定用户名,则以用户 username 的身份调用该命令,否则以 root 用户身份调用该命令。
syseventadm remove 命令可删除匹配的 sysevent 事件指定的处理程序。可以通过指定 vendor、publisher、class、username 或 path 中的至少一项来匹配事件指定。如果指定 class,可以通过 sub-class 对其进行限定。任何未指定的 vendor、publisher、class、sub-class、username、path 或 args 均与所有事件的相应字段匹配。所有匹配指定的处理程序都将被删除。
syseventadm list 命令可列出匹配的 sysevent 事件指定的处理程序,所采用的匹配条件与 remove 命令相同,只是不要求至少指定 vendor、publisher、class、username 或 path 中的一项。不指定匹配条件时,将列出所有指定。list 命令的输出格式为:[vendor=vendor] [publisher= publisher] [class=class] [subclass=subclass] [username=username] path [args],其中各个 class、sub-class、vendor、publisher 和 username 仅在属于所列出指定的匹配条件时才会列出。
在通过添加或删除一个或多个 sysevent 处理程序指定而做了更改后,syseventadm restart 命令通知 syseventd 守护进程重新读取 sysevent 注册表。
sysevent 处理工具提供大量宏功能,用于构造为响应事件而执行的命令行参数。宏扩展仅适用于为事件处理程序指定的命令行 args,扩展宏时使用的数据来自事件本身。系统为事件的 class、subclass、publisher 和 vendor 信息提供了预定义的宏。如果宏与预定义的宏名称之一不匹配,将搜索附加到事件的属性列表以查找使用该名称的属性,并在命令行上替换匹配属性的值。
宏由 $ 字符引入,宏名称为由空格或制表符字符分隔的以下标记。如果宏名称嵌入到文本中,可由 ${ 和 } 将其标识出来。$ 前有 \ 时宏不会扩展。
定义事件的类字符串
定义事件的发布者字符串
事件的序列号
定义事件的子类字符串
事件的时间戳
定义事件的供应商字符串
不在预定义范围内的宏名称将与随事件提供的属性列表进行比较。属性的名称与宏名称匹配时,在生成的命令行上将使用 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 子命令支持以下选项:
命令参数
为响应事件而运行的命令的完整路径。
示例 1 添加事件处理程序
以下示例为由供应商 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 命令)。
命令用法不正确。
权限被拒绝。
命令失败。
内存不足。
有关下列属性的说明,请参见 attributes(5):
|
syseventd(1M)、sysevent_post_event(3SYSEVENT)、attributes(5)、ddi_log_sysevent(9F)
为避免升级问题,提供 sysevent 事件处理程序的软件包应从软件包的安装后脚本运行 syseventadm 来安装事件处理程序。然后,可以使用添加时所用的相同参数从软件包的删除前脚本运行 syseventadm 来删除事件处理程序。