跳过导航链接 | |
退出打印视图 | |
手册页第 1 部分:用户命令 Oracle Solaris 11.1 Information Library (简体中文) |
- 检索服务配置属性值
svcprop [-afqtv] [-C | -c | -s snapshot] [-p [name/]name]... [ -g pgtype]...-l layer[,...] {FMRI | pattern}...
svcprop -w [-fqtv] [-p [name/]name] {FMRI | pattern}
svcprop 实用程序输出服务配置系统信息库中的属性值。属性可通过 -p 选项和操作数选定。如果未使用 -p 明确选择属性或属性组,svcprop 将不会打印 SMF 模板定义属性。在未来发行版的缺省输出中可能会隐藏更多 SMF 基础结构属性。如果使用 -a,将显示所有属性,包括 SMF 模板定义属性。
如果不带 -C、-c 或 -s 选项,svcprop 将访问有效属性。服务的有效属性是其直接附加属性。服务实例的有效属性是以下属性的联合:该实例正在运行的快照的复合视图中的属性,以及该实例直接附加属性的复合视图的非持久属性组中的属性。有关属性编写的说明,请参见 smf(5)。如果不存在正在运行的快照,则改用该实例的直接附加属性。
缺省情况下,如果选定单个属性,每个属性的值将显示在单独的行中。空的 ASCII 字符串值用一对双引号 (“”) 表示。ASCII 字符串值中的 Bourne shell 元字符(包括 ';'、'&'、'('、')'、'|'、'^'、'<'、'>'、换行符、空格、跳格、反斜杠、'"'、单引号以及 '`')通过反斜杠 (\) 引用。
如果选定多个属性,每个属性将显示在一行中。每行包含一个属性定义符、属性类型以及属性值(如上所述)。这几项由空格分开。缺省情况下,如果提供了一个 FMRI 操作数,则属性定义符由属性组名称和属性名称中间加一个斜杠 (/) 组成。如果提供了多个 FMRI 操作数,则属性定义符是一个规范的 FMRI。
如果访问控制禁止读取属性值并且 -p 选项没有明确指定属性或属性组,则属性的显示就像没有任何属性值一样。如果 -p 选项指定了一个或多个属性或属性组名称,并且访问控制禁止读取任何属性值,则会生成错误。
标准错误流将显示错误消息。
支持以下选项:
显示所有属性,包括 SMF 模板定义属性组中的属性。
使用直接附加属性,无需编写。
对于服务实例,使用其直接附加属性的复合视图。
选择多属性输出格式,将完整的 FMRI 作为定义符。
仅显示类型为 pgtype 的属性组中的选定属性。使用多个 -g 选项将显示多个属性组类型的属性。此选项意味着多属性输出格式 (-t)。
仅显示在选定层中定义的属性。可用层包括:manifest、system-profile、site-profile 和 admin。别名 all 可用于选择所有层。使用此选项时,不会显示属于非持久性属性组的属性。
对于操作数指定的每个服务或服务实例,选择 name 属性组中的所有属性。对于操作数指定的属性组,选择 name 属性。如果与 -g 一起使用,将选择所有匹配属性组类型的 name 属性。
对于操作数指定的每个服务或服务实例,选择 pg 属性组中的 prop 属性。
静默。不产生输出。
对于服务实例,使用 name 快照的复合视图。
选择多属性输出格式。
详细模式。对不存在的属性输出错误消息,即使同时指定了 -q 选项。
等到指定的属性组或包含指定属性的属性组在输出前更改。
该选项仅在指定了单个实体时有效。如果指定了多个操作数或者一个操作数与多个实例匹配,则会输出一条错误消息并且不采取任何操作。-C 选项是隐含的。
支持下列操作数:
服务、服务实例、属性组或属性的 FMRI。
可以通过指定实例名称或服务名称的结尾部分使用实例或服务的缩写形式。属性和属性组必须由完整的 FMRI 指定。例如,以下给定的 FMRI:
svc:/network/smtp:sendmail
以下是有效的缩写形式:
sendmail :sendmail smtp smtp:sendmail network/smtp
以下是无效的缩写形式:
mailnetwork network/smt
FMRI 的缩写形式还未确定,因此不应在脚本或其他永久性工具中使用。如果一个缩写与多个实例匹配,每个实例都需要运行 svcprop。
一种通配模式,与系统信息库中的服务和实例的 FMRI 匹配。请参见 fnmatch(5)。如果一个模式与多个服务或实例匹配,每个服务或实例都需要运行 svcprop。
示例 1 显示单个属性的值
以下示例显示了 system/cron 服务的 default 实例的 restarter 属性组中 state 属性的值。
example% svcprop -p restarter/state system/cron:default online
示例 2 检索是否启用了服务
是否启用服务由服务的 -general/enabled 属性决定。该属性可立即生效,因此必须使用 -c 选项。
example% svcprop -c -p general/enabled system/cron:default true
示例 3 显示属性组中的所有属性
以下实例显示了 Solaris 缺省安装时,network/ntp 服务的每个实例的 general 属性组中包含的所有属性:
example% svcprop -p general ntp general/package astring SUNWntpr general/enabled boolean true general/entity_stability astring Uncommitted general/single_instance boolean true
示例 4 验证属性是否存在
以下示例验证了服务 identity 的所有实例的 general/enabled 属性是否存在。
example% svcprop -q -p general/enabled identity: example% echo $? 0
示例 5 等待属性更改
以下示例等待 sendmail 实例更改状态。
example% svcprop -w -p restarter/state sendmail
示例 6 在脚本中检索布尔属性的值
以下示例在脚本中检索布尔属性的值:
set -- `svcprop -c -t -p general/enabled service` code=$? if [ $code -ne 0 ]; then echo "svcprop failed with exit code $code" return 1 fi if [ $2 != boolean ]; then echo "general/enabled has unexpected type $2" return 2 fi if [ $# -ne 3 ]; then echo "general/enabled has wrong number of values" return 3 fi value=$3 ...
示例 7 在脚本中使用 svcprop
以下示例获取服务属性的值,并将其用于脚本 (/usr/bin/Xserver):
fmri=$1 prop=$2 if svcprop -q -p ${prop} ${fmri} ; then propval="$(svcprop -p ${prop} "${fmri}")" if [[ "${propval}" == "\"\"" ]] ; then propval="" fi fi
示例 8 按属性组类型过滤输出
以下示例获取 svc:/network/ssh:default 的方法:
example% svcprop -p exec -g method svc:/network/ssh:default start/exec astring /lib/svc/method/sshd\ start stop/exec astring :kill refresh/exec astring /lib/svc/method/sshd\ restart unconfigure/exec astring /lib/svc/method/sshd\ -u
示例 9 显示通过管理方式定制的属性
以下命令使用 SMF 层显示通过管理方式定制的属性。
example% svcprop -p config -l admin svc:/network/dns/client config/domain astring admin my.domain.com config/nameserver net_address admin 10.22.33.44 10.44.33.11
将返回以下退出值:
成功完成。
出现错误。
指定的命令行选项无效。
有关下列属性的说明,请参见 attributes(5):
|
svcs(1)、inetd(1M)、svcadm(1M)、svccfg(1M)、svc.startd(1M)、service_bundle(4)、attributes(5)、fnmatch(5)、smf(5)、smf_method(5)、smf_security(5)