手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

syseventadm(1M)

名称

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 事件处理程序的管理性前端。您还可以通过使用 restart 命令来重新启动 sysevent 守护进程。syseventadm 只能由 root 用户运行。

syseventadm add 命令可为由供应商、发布者或类中至少一项指定的 sysevent 事件添加处理程序。如果指定 class,可以通过 sub-class 对其进行限定。只会将添加处理程序时为 vendorpublisherclasssub-class 指定的值与 sysevent 事件进行匹配,以确定指定值是否与事件匹配以及是否应运行处理程序。path 是响应匹配事件而运行的命令的全路径名,带有可选参数 (args)。如果指定用户名,则以用户 username 的身份调用该命令,否则以 root 用户身份调用该命令。

syseventadm remove 命令可删除匹配的 sysevent 事件指定的处理程序。可以通过指定 vendorpublisherclassusernamepath 中的至少一项来匹配事件指定。如果指定 class,可以通过 sub-class 对其进行限定。任何未指定的 vendorpublisherclasssub-classusernamepathargs 均与所有事件的相应字段匹配。所有匹配指定的处理程序都将被删除。

syseventadm list 命令可列出匹配的 sysevent 事件指定的处理程序,所采用的匹配条件与 remove 命令相同,只是不要求至少指定 vendorpublisherclassusernamepath 中的一项。不指定匹配条件时,将列出所有指定。list 命令的输出格式为:[vendor=vendor] [publisher= publisher] [class=class] [subclass=subclass] [username=username] path [args],其中各个 classsub-classvendorpublisherusername 仅在属于所列出指定的匹配条件时才会列出。

在通过添加或删除一个或多个 sysevent 处理程序指定而做了更改后,syseventadm restart 命令通知 syseventd 守护进程重新读取 sysevent 注册表。

参数宏替换

sysevent 处理工具提供大量宏功能,用于构造为响应事件而执行的命令行参数。宏扩展仅适用于为事件处理程序指定的命令行 args,扩展宏时使用的数据来自事件本身。系统为事件的 classsubclasspublishervendor 信息提供了预定义的宏。如果宏与预定义的宏名称之一不匹配,将搜索附加到事件的属性列表以查找使用该名称的属性,并在命令行上替换匹配属性的值。

宏由 $ 字符引入,宏名称为由空格或制表符字符分隔的以下标记。如果宏名称嵌入到文本中,可由 ${} 将其标识出来。$ 前有 \ 时宏不会扩展。

$class

定义事件的类字符串

$publisher

定义事件的发布者字符串

$sequence

事件的序列号

$subclass

定义事件的子类字符串

$timestamp

事件的时间戳

$vendor

定义事件的供应商字符串

不在预定义范围内的宏名称将与随事件提供的属性列表进行比较。属性的名称与宏名称匹配时,在生成的命令行上将使用 ASCII 文本替换该属性的值。

如果没有为使用的宏定义同名属性或提供了多个同名的属性,将发生错误,不会调用该命令。

具有带符号数据类型(DATA_TYPE_INT16DATA_TYPE_INT32DATA_TYPE_INT64)的属性将扩展为十进制数字。

具有无符号数据类型(DATA_TYPE_BYTEDATA_TYPE_UINT16DATA_TYPE_UINT32DATA_TYPE_UINT64DATA_TYPE_HTTIME)的属性将扩展为带 0x 前缀的十六进制数字。

具有字符串数据类型 (DATA_TYPE_STRING) 的属性将通过字符串数据进行扩展。该数据不带引号。如果需要在命令行上生成带引号的字符串,请在参数中的宏调用两侧加引号。

扩展数组类型时,每个元素都会按照该标量类型的定义进行扩展,用空格分隔每个替换的元素。

选项

addlistremove 子命令支持以下选项:

–c class

指定事件类 class

–p publisher

指定事件发布者 publisher

–R rootdir

指定备用根路径 rootdir


注 - 不得使用 –R 选项引用任何非全局区域的根文件系统。否则,可能会损坏全局区域的文件系统,危及全局区域的安全性,或者损坏非全局区域的文件系统。请参见 zones(5)
–s subclass

指定事件子类 subclass

–u username

指定用于调用命令的用户名 (username)。

–v vendor

指定定义事件的供应商 (vendor)。由第三方软件定义的事件应指定该公司的股票代码作为 vendor。Oracle 定义的事件使用 SUNW

操作数

addlistremove 子命令支持以下选项:

args

命令参数

path

为响应事件而运行的命令的完整路径。

示例

示例 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

退出状态

将返回以下退出值:

0

成功完成。

1

未找到匹配的事件指定(仅限 remove 或 list 命令)。

2

命令用法不正确。

3

权限被拒绝。

4

命令失败。

5

内存不足。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

syseventd(1M)sysevent_post_event(3SYSEVENT)attributes(5)ddi_log_sysevent(9F)

附注

为避免升级问题,提供 sysevent 事件处理程序的软件包应从软件包的安装后脚本运行 syseventadm 来安装事件处理程序。然后,可以使用添加时所用的相同参数从软件包的删除前脚本运行 syseventadm 来删除事件处理程序。