'\" te .\" Copyright (c) 2004, 2012, Oracle and/or its affiliates.All rights reserved. .TH syseventadm 1M "2012 年 5 月 22 日" "SunOS 5.11" "系统管理命令" .SH 名称 syseventadm \- 管理 sysevent 事件指定 .SH 用法概要 .LP .nf \fBsyseventadm\fR add [\fB-R\fR \fIrootdir\fR] [\fB-v\fR \fIvendor\fR] [\fB-p\fR \fIpublisher\fR] [\fB-c\fR \fIclass\fR] [\fB-s\fR \fIsubclass\fR] [\fB-u\fR \fIusername\fR] \fIpath\fR [\fIargs\fR] .fi .LP .nf \fBsyseventadm\fR remove [\fB-R\fR \fIrootdir\fR] [\fB-v\fR \fIvendor\fR] [\fB-p\fR \fIpublisher\fR] [\fB-c\fR \fIclass\fR] [\fB-s\fR \fIsubclass\fR] [\fB-u\fR \fIusername\fR] [\fIpath\fR [\fIargs\fR]] .fi .LP .nf \fBsyseventadm\fR list [\fB-R\fR \fIrootdir\fR] [\fB-v\fR \fIvendor\fR] [\fB-p\fR \fIpublisher\fR] [\fB-c\fR \fIclass\fR] [\fB-s\fR \fIsubclass\fR] [\fB-u\fR \fIusername\fR] [\fIpath\fR [\fIargs\fR]] .fi .LP .nf \fBsyseventadm\fR restart .fi .SH 描述 .sp .LP \fBsyseventadm\fR 命令是用于添加、删除和列出 \fBsysevent\fR 事件处理程序的管理性前端。您还可以通过使用 restart 命令来重新启动 sysevent 守护进程。\fBsyseventadm\fR 只能由 root 用户运行。 .sp .LP \fBsyseventadm\fR \fBadd\fR 命令可为由供应商、发布者或类中至少一项指定的 \fBsysevent\fR 事件添加处理程序。如果指定 \fIclass\fR,可以通过 \fIsub-class\fR 对其进行限定。只会将添加处理程序时为 \fIvendor\fR、\fIpublisher\fR、\fIclass\fR 和 \fIsub-class\fR 指定的值与 \fBsysevent\fR 事件进行匹配,以确定指定值是否与事件匹配以及是否应运行处理程序。\fIpath\fR 是响应匹配事件而运行的命令的全路径名,带有可选参数 (\fIargs\fR)。如果指定用户名,则以用户 \fIusername\fR 的身份调用该命令,否则以 root 用户身份调用该命令。 .sp .LP \fBsyseventadm\fR \fBremove\fR 命令可删除匹配的 sysevent 事件指定的处理程序。可以通过指定 \fIvendor\fR、\fIpublisher\fR、\fIclass\fR、\fIusername\fR 或 \fIpath\fR 中的至少一项来匹配事件指定。如果指定 \fIclass\fR,可以通过 \fIsub-class\fR 对其进行限定。任何未指定的 \fIvendor\fR、\fIpublisher\fR、\fIclass\fR、\fIsub-class\fR、\fIusername\fR、\fIpath\fR 或 \fIargs\fR 均与所有事件的相应字段匹配。所有匹配指定的处理程序都将被删除。 .sp .LP \fBsyseventadm\fR \fBlist\fR 命令可列出匹配的 \fBsysevent\fR 事件指定的处理程序,所采用的匹配条件与 \fBremove\fR 命令相同,只是不要求至少指定 \fIvendor\fR、\fIpublisher\fR、\fIclass\fR、\fIusername\fR 或 \fIpath\fR 中的一项。不指定匹配条件时,将列出所有指定。list 命令的输出格式为:[vendor=\fIvendor\fR] [publisher=\fI publisher\fR] [class=\fIclass\fR] [subclass=\fIsubclass\fR] [username=\fIusername\fR] \fIpath\fR [\fIargs\fR],其中各个 \fIclass\fR、\fIsub-class\fR、\fIvendor\fR、\fIpublisher\fR 和 \fIusername\fR 仅在属于所列出指定的匹配条件时才会列出。 .sp .LP 在通过添加或删除一个或多个 \fBsysevent\fR 处理程序指定而做了更改后,\fBsyseventadm\fR \fBrestart\fR 命令通知 \fBsyseventd\fR 守护进程重新读取 \fBsysevent\fR 注册表。 .SS "参数宏替换" .sp .LP \fBsysevent\fR 处理工具提供大量宏功能,用于构造为响应事件而执行的命令行参数。宏扩展仅适用于为事件处理程序指定的命令行 \fIargs\fR,扩展宏时使用的数据来自事件本身。系统为事件的 \fIclass\fR、\fIsubclass\fR、\fIpublisher\fR 和 \fIvendor\fR 信息提供了预定义的宏。如果宏与预定义的宏名称之一不匹配,将搜索附加到事件的属性列表以查找使用该名称的属性,并在命令行上替换匹配属性的值。 .sp .LP 宏由 \fB$\fR 字符引入,宏名称为由空格或制表符字符分隔的以下标记。如果宏名称嵌入到文本中,可由 \fB${\fR 和 \fB}\fR 将其标识出来。\fB$\fR 前有 \fB\\fR 时宏不会扩展。 .sp .ne 2 .mk .na \fB$\fIclass\fR\fR .ad .RS 14n .rt 定义事件的类字符串 .RE .sp .ne 2 .mk .na \fB$\fIpublisher\fR\fR .ad .RS 14n .rt 定义事件的发布者字符串 .RE .sp .ne 2 .mk .na \fB$\fIsequence\fR\fR .ad .RS 14n .rt 事件的序列号 .RE .sp .ne 2 .mk .na \fB$\fIsubclass\fR\fR .ad .RS 14n .rt 定义事件的子类字符串 .RE .sp .ne 2 .mk .na \fB$\fItimestamp\fR\fR .ad .RS 14n .rt 事件的时间戳 .RE .sp .ne 2 .mk .na \fB$\fIvendor\fR\fR .ad .RS 14n .rt 定义事件的供应商字符串 .RE .sp .LP 不在预定义范围内的宏名称将与随事件提供的属性列表进行比较。属性的名称与宏名称匹配时,在生成的命令行上将使用 \fBASCII\fR 文本替换该属性的值。 .sp .LP 如果没有为使用的宏定义同名属性或提供了多个同名的属性,将发生错误,不会调用该命令。 .sp .LP 具有带符号数据类型(\fBDATA_TYPE_INT16\fR、\fBDATA_TYPE_INT32\fR 和 \fBDATA_TYPE_INT64\fR)的属性将扩展为十进制数字。 .sp .LP 具有无符号数据类型(\fBDATA_TYPE_BYTE\fR、\fBDATA_TYPE_UINT16\fR、\fBDATA_TYPE_UINT32\fR、\fBDATA_TYPE_UINT64\fR 和 \fBDATA_TYPE_HTTIME\fR)的属性将扩展为带 \fB0x\fR 前缀的十六进制数字。 .sp .LP 具有字符串数据类型 (\fBDATA_TYPE_STRING\fR) 的属性将通过字符串数据进行扩展。该数据不带引号。如果需要在命令行上生成带引号的字符串,请在参数中的宏调用两侧加引号。 .sp .LP 扩展数组类型时,每个元素都会按照该标量类型的定义进行扩展,用空格分隔每个替换的元素。 .SH 选项 .sp .LP \fBadd\fR、\fBlist\fR 和 \fBremove\fR 子命令支持以下选项: .sp .ne 2 .mk .na \fB\fB-c\fR \fIclass\fR\fR .ad .RS 16n .rt 指定事件类 \fIclass\fR。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fIpublisher\fR\fR .ad .RS 16n .rt 指定事件发布者 \fIpublisher\fR。 .RE .sp .ne 2 .mk .na \fB\fB-R\fR \fIrootdir\fR\fR .ad .RS 16n .rt 指定备用根路径 \fIrootdir\fR。 .LP 注 - .sp .RS 2 不得使用 \fB-R\fR 选项引用任何非全局区域的根文件系统。否则,可能会损坏全局区域的文件系统,危及全局区域的安全性,或者损坏非全局区域的文件系统。请参见 \fBzones\fR(5)。 .RE .RE .sp .ne 2 .mk .na \fB\fB-s\fR \fIsubclass\fR\fR .ad .RS 16n .rt 指定事件子类 \fIsubclass\fR。 .RE .sp .ne 2 .mk .na \fB\fB-u\fR \fIusername\fR\fR .ad .RS 16n .rt 指定用于调用命令的用户名 (\fIusername\fR)。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR \fIvendor\fR\fR .ad .RS 16n .rt 指定定义事件的供应商 (\fIvendor\fR)。由第三方软件定义的事件应指定该公司的股票代码作为 \fIvendor\fR。Oracle 定义的事件使用 \fBSUNW\fR。 .RE .SH 操作数 .sp .LP \fBadd\fR、\fBlist\fR 和 \fBremove\fR 子命令支持以下选项: .sp .ne 2 .mk .na \fB\fIargs\fR\fR .ad .RS 8n .rt 命令参数 .RE .sp .ne 2 .mk .na \fB\fIpath\fR\fR .ad .RS 8n .rt 为响应事件而运行的命令的完整路径。 .RE .SH 示例 .LP \fB示例 1 \fR添加事件处理程序 .sp .LP 以下示例为由供应商 \fBMYCO\fR (“My Company”)、类 \fBEC_ENV\fR 和子类 \fBESC_ENV_TEMP\fR 定义的事件添加事件处理程序。要运行的命令是 \fB/opt/MYCOenv/bin/ec_env_temp\fR,参数是从事件属性中得到的类名称、子类名称和路径名。\fB$\fR 字符前面有一个反斜杠,以规避 shell 解释。由于注册表在 \fB$ALTROOT\fR 上维护,因此更改后无需重新启动服务。 .sp .in +2 .nf # syseventadm add -R \eALTROOT -v MYCO -c EC_ENV -s ESC_ENV_TEMP \e /opt/MYCOenv/bin/ec_env_temp \e$class \e$subclass \e$pathname .fi .in -2 .sp .sp .LP 注意上述 \fB-R\fR 选项说明中有关使用该选项的警告。 .LP \fB示例 2 \fR删除事件处理程序 .sp .LP 以下示例将删除示例 1 中添加的事件处理程序。 .sp .in +2 .nf # syseventadm remove -R \eALTROOT -v MYCO -c EC_ENV -s ESC_ENV_TEMP \e /opt/MYCOenv/bin/ec_env_temp \eclass} \esubclass} \epathname} .fi .in -2 .sp .sp .LP 注意上述 \fB-R\fR 选项说明中有关使用该选项的警告。 .LP \fB示例 3 \fR列出事件处理程序 .sp .LP 以下示例为由供应商 \fBMYCO\fR 定义的类为 \fBEC_ENV\fR、子类为 \fBESC_ENV_TEMP\fR 的事件列出所有事件处理程序: .sp .in +2 .nf # syseventadm list -v MYCO -c EC_ENV -s ESC_ENV_TEMP \e vendor=MYCO class=EC_ENV subclass=ESC_ENV_TEMP \e /opt/MYCOenv/bin/ec_env_temp \e${class} \e${subclass} \e${pathname} .fi .in -2 .sp .LP \fB示例 4 \fR列出事件处理程序 .sp .LP 以下示例列出由供应商 \fBVRTS\fR 定义的所有事件处理程序。 .sp .in +2 .nf # syseventadm list -v VRTS .fi .in -2 .sp .LP \fB示例 5 \fR删除事件处理程序 .sp .LP 以下示例删除由供应商 \fBVRTS\fR 定义的所有事件处理程序,然后重新启动服务。 .sp .in +2 .nf # syseventadm remove -v VRTS # syseventadm restart .fi .in -2 .sp .LP \fB示例 6 \fR列出指定运行某个命令的所有事件处理程序 .sp .LP 以下示例列出指定运行 \fB/opt/MYCOenv/bin/ec_env_temp\fR 命令的所有事件处理程序: .sp .in +2 .nf # syseventadm list /opt/MYCOenv/bin/ec_env_temp .fi .in -2 .sp .LP \fB示例 7 \fR删除事件处理程序并重新启动服务 .sp .LP 以下示例删除指定运行 \fB/opt/MYCOenv/bin/ec_env_temp\fR 命令的所有事件处理程序,然后重新启动服务: .sp .in +2 .nf # syseventadm remove /opt/MYCOenv/bin/ec_env_temp # syseventadm restart .fi .in -2 .sp .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 5n .rt 成功完成。 .RE .sp .ne 2 .mk .na \fB\fB1\fR\fR .ad .RS 5n .rt 未找到匹配的事件指定(仅限 remove 或 list 命令)。 .RE .sp .ne 2 .mk .na \fB\fB2\fR\fR .ad .RS 5n .rt 命令用法不正确。 .RE .sp .ne 2 .mk .na \fB\fB3\fR\fR .ad .RS 5n .rt 权限被拒绝。 .RE .sp .ne 2 .mk .na \fB\fB4\fR\fR .ad .RS 5n .rt 命令失败。 .RE .sp .ne 2 .mk .na \fB\fB5\fR\fR .ad .RS 5n .rt 内存不足。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os .TE .SH 另请参见 .sp .LP \fBsyseventd\fR(1M)、\fBsysevent_post_event\fR(3SYSEVENT)、\fBattributes\fR(5)、\fBddi_log_sysevent\fR(9F) .SH 附注 .sp .LP 为避免升级问题,提供 sysevent 事件处理程序的软件包应从软件包的安装后脚本运行 \fBsyseventadm\fR 来安装事件处理程序。然后,可以使用添加时所用的相同参数从软件包的删除前脚本运行 \fBsyseventadm\fR 来删除事件处理程序。