跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- 导入、导出和修改服务配置
/usr/sbin/svccfg [-v] [-s FMRI]
/usr/sbin/svccfg [-v] [-s FMRI] subcommand [args]...
/usr/sbin/svccfg [-v] [-s FMRI] -f command-file
svccfg 命令处理服务配置系统信息库中的数据。svccfg 可以通过单个子命令或指定一个包含一系列子命令的命令文件以交互方式调用。
对系统信息库中现有服务所做的更改通常在下次刷新服务实例之后才会对该服务生效。有关更多详细信息,请参见 svcadm(1M) 手册页上的 refresh 子命令。
所支持的选项如下:
读取并执行 command-file 中的 svccfg 子命令。
在执行任何子命令之前选择 FMRI(fault management resource identifier,故障管理资源标识符)所表示的实体。请参见 smf(5)。
详细模式。
子命令分为几类,如以下各小节所述。
所有接受 FMRI 的子命令还接受缩写或 glob 模式。可以通过指定实例名称或服务名称的结尾部分使用实例或服务的缩写形式。例如,对于以下 FMRI:
svc:/network/smtp:sendmail
下列各项都是有效的缩写:
sendmail :sendmail smtp smtp:sendmail network/smtp
而下列项则无效:
mail network network/smt
FMRI 的缩写形式不稳定,不应在脚本或其他永久性工具中使用。如果模式与多个实例或服务匹配,则会输出一条错误消息并且不采取任何操作。
立即退出。
将 repfile 用作系统信息库。缺省情况下,svccfg(1M) 使用系统信息库。
仅将系统信息库用于您当前正在运行的相同版本的 Solaris 中的文件(包括修补程序)。不要将该子命令用于系统信息库 /etc/svc/repository.db。
如果在部署时间之前使用 svccfg repository 预填充 SMF 系统信息库,则使用 -p 选项为使用 import 导入的清单的系统标准位置指定根前缀。系统信息库位于活动系统上后,该前缀将被 /lib/svc/manifest 和 /var/svc/manifest 替换。如果运行时 -p 目录的清单未显示在系统标准位置中,将删除与它们关联的服务。
设置可选行为。如果未指定选项,设置会显示当前有效的选项。
启用详细模式。
禁用详细模式。
如果参数是服务配置文件或清单,则将配置应用到 SMF 系统信息库的管理层。将根据需要创建服务、实例、属性组和属性。
如果未指定属性或属性组的类型特性,将尝试从现有的类型设置或服务模板确定类型。如果无法确定类型,将显示一条警告并跳过服务,这样就不会在服务和实例中引入不一致的数据。忽略不存在的服务和实例。
要使用配置文件中的宽松元素定义,需要将以下定义添加到 DOCTYPE 条目中:
<!ENTITY % profile "INCLUDE"> <!ENTITY % manifest "IGNORE">
将刷新配置文件修改的服务和实例。如果指定了 -n,将处理配置文件并且不对 SMF 系统信息库应用更改。将在标准错误中报告已找到的任何语法错误并返回退出代码 1。有关服务配置文件的说明,请参见 smf(5)。该命令需要具有修改服务和实例中的属性的特权。有关修改属性所需的特权,请参见 smf_security(5)。
将针对清单和系统信息库中的模板数据验证清单或配置文件中的服务和实例,并发出所有违反模板的警告。有关模板说明,请参见 smf_template(5)。如果指定了 -V 选项,将无法导入违反已定义模板的清单。在交互式调用 svccfg 时,-V 是缺省行为。
如果要应用的参数是一个目录,则会按照以上所述应用在该目录树下找到的所有配置文件。如果指定文件或在指定目录下找到的任何文件不是服务配置文件,该子命令将失败。
在系统上输出表示本地定制的服务配置文件。
如果提供 -l,则可以选择从中导出值的层列表。-l 选项需要层名称,并使用以下参数:manifest、system-profile、site-profile、admin、current、all。current 和 all 是同义词,表示最高层值。提供这两者以实现与 listprop 子命令的一致性。多个层可以以逗号分隔,或使用多个 -l 选项指定。
如果未提供 -l,则缺省值为 -l admin,site-profile。
如果在多个选定层中定义属性,则在配置文件中仅导出最高层。
如果没有 -a 选项,将提取包含受保护信息(由存在的 read_authorization 属性标识,请参见 smf_security(5))的属性组,但不提取它们的属性值。指定 -a 选项时,将提取所有的值。如果没有读取这些值的足够特权,则会生成错误。
运行 svccfg export 等效于:
svccfg extract -l current [-a] service_FMRI [>file]
系统管理的文件系统位置(/lib/svc/manifest 和 /var/svc/manifest 的子目录)中的文件上的 svccfg import 调用:svcadm restart manifest-import。
推荐的做法是将清单放置在系统管理的位置,并调用 svcadm restart manifest-import 来导入它们。
位于其他位置的文件上的 svccfg import 将其属性作为管理定制导入到管理层。这等效于:
svccfg apply [file | directory]
如果 file 确定为服务清单或配置文件,则会输出 file 说明的服务和实例的 FMRI。对于每个服务,在服务的 FMRI 之前会显示其实例的 FMRI。
validate 子命令可以针对清单文件、实例 FMRI、当前实例或快照实体选择运行。指定参数后,svccfg 将检查是否存在指定的文件。如果该文件存在,将对其进行验证。如果指定名称的文件不存在,则将该参数视为 FMRI 模式。如果文件名与 FMRI 之间存在冲突,请使用 svc: 和 file: 前缀指示 svccfg 如何解释参数。
指定文件时,将按照与 import -V 相似的方式处理该文件,但不对系统信息库执行任何更改。如果检测到任何错误,svccfg 会显示错误并以非零退出状态退出。
对于实例 fmri、实例实体选择或快照实体选择,将针对系统信息库中的模板数据验证复合格式的指定实例(请参见 smf(5) 中的“属性和属性组”)。实例 FMRI 和实例实体选择使用“正在运行的”快照进行验证。将发出所有违反模板的警告。有关模板说明,请参见 smf_template(5)。
如果服务或实例由清单或配置文件支持,则它被屏蔽。请参见 smf(5)。
“实体”表示作用域、服务或服务实例。
将创建具有指定名称的新实体作为当前选择的子实体。有关创建实体所需的特权,请参见 smf_security(5)。
删除当前选择的命名子实体或 fmri 指定的实体。除非指定 -f 标志,否则尝试删除“联机”或“降级”状态的服务实例会失败。如果服务或服务实例具有类型为 "framework" 的 "dependents" 属性组,则对于其中类型为 "astring" 或 "fmri" 的每个属性,当属性包含用于命名服务或服务实例的单个值时,将删除指定服务或服务实例中与该属性同名的相关项属性组。有关删除服务配置所需的特权,请参见 smf_security(5)。
显示其名称与 glob 模式 pattern 匹配的当前选择的子实体(请参见 fnmatch(5))。还为具有属性的实体(即服务和服务实例)列出 ':properties'。
如果参数指定当前所选内容的子级,它将成为当前所选内容。否则,参数将被解释为 FMRI,参数指定的实体成为当前所选内容。
当前所选内容的父级成为当前所选内容。
将具有指定 name 和类型的属性组添加到当前所选内容。flags 是一个字符串,用于指定创建属性组所使用的标志。'P' 表示 SCF_PG_FLAG_NONPERSISTENT(请参见 scf_service_add_pg(3SCF))。有关创建属性组所需的特权,请参见 smf_security(5)。
将指定值添加到属性。如果 type 已指定并且属性存在,则当 type 与属性的 type 不一致时,子命令将失败。这些值可以用双引号引住。包含双引号或反斜杠的字符串值必须用双引号引住,包含的双引号和反斜杠必须用反斜杠引住。创建不存在的属性,在这种情况下必须提供 type 说明符。有关可用属性类型的列表,请参见 scf_value_create(3SCF)。有关修改属性所需的特权,请参见 smf_security(5)。新值将附加到与属性相关的属性值列表末尾处。
删除当前选择的任何管理定制。如果提供参数,将作为 glob 模式获取并仅删除名称与参数匹配的属性组和属性。
如果提供 -M,则仅删除屏蔽的实体。
要查看 delcust 将删除的定制,请使用 listcust 和相同的选项。因为 delcust 可能删除所有管理定制,所以始终首先运行 listcust 来确定您要删除所需的内容。
删除当前选择的属性组 name。有关删除属性组所需的特权,请参见 smf_security(5)。
如果属性组由清单或配置文件支持,则它被屏蔽。请参见 smf(5)。
删除当前选择的命名属性组或属性。有关删除属性所需的特权,请参见 smf_security(5)。
删除与命名属性中的指定 glob 模式匹配的所有值。即使没有值与之匹配也会成功。有关修改属性所需的特权,请参见 smf_security(5)。
说明当前或可能的设置。
不使用参数调用时,describe 会提供当前所选实体及其所有当前设置的属性组和属性的基本说明(如果有)。通过指定属性组名称或者属性组名称和属性名称(用斜杠 (/) 隔开),可以将属性组或具体属性作为参数查询。
-v 选项提供所有的可用信息,包括当前设置、约束及其他可能的设置选择的说明。
-t 选项仅显示选择的模板数据(请参见 smf_template(5)),不显示属性组和属性的当前设置。
对于重现当前选择的属性组和属性的命令的注释,将放置在临时文件中,调用 EDITOR 环境变量指定的程序对其进行编辑。完成后执行临时文件中的命令。缺省编辑器是 vi(1)。有关创建、修改或删除属性所需的特权,请参见 smf_security(5)。
显示当前选择的属性组的名称、类型和标志。如果指定了某个参数,将作为 glob 模式获取并仅列出名称与该参数匹配的属性组。
在交互模式下,还提供属性组的基本说明。
列出当前选择的属性组和属性。对于属性组,列出其名称、类型和标志。对于属性,列出其名称(前面会加上属性组名称和斜杠 (/))、类型和值。有关可用属性类型的列表,请参见 scf_value_create(3SCF)。如果提供参数,将作为 glob 模式获取并仅列出名称与参数匹配的属性组和属性。
使用 -l 选项,输出值来自的层。-l 选项需要层,并使用以下参数:manifest、system-profile、site-profile、admin、current、all。current 输出与 listprop 相同的属性值(不使用 -l),以及在其中定义值的层。
-f 和 -o 选项是互斥的。-f 输出属性来自的文件(如果有)。-o 允许字段选择。可选择的字段包括:
属性名称
属性组名称
实例名称
服务名称
层
属性类型
属性值
源文件
属性组或属性当前是否被屏蔽
上次更改该属性的时间
为当前选择输出任何站点配置文件和管理层定制以及屏蔽实体。如果提供参数,将作为 glob 模式获取并仅列出名称与参数匹配的属性组和属性。如果没有当前选择,则列出所有服务的所有定制。
如果提供 -M,则仅输出屏蔽的实体。
如果提供 -L,则显示所有本地定制,包括同时位于管理层和站点配置文件层内的定制。
如果 method_name 属性组具有类型 "method",则通过更改该属性组中的 "environment" 属性设置服务或实例的方法环境变量。如果未指定 method_name 并且使用 -i 选项,则当前选择实例时将使用 "method_context" 属性组。如果使用 -s 选项并且当前选择了服务,则会使用其 "method_context" 属性组。如果使用 -s 选项并且当前选择了实例,则会使用其父级的 "method_context" 属性组。如果既不使用 -i 选项也不使用 -s 选项,将在当前选择的实体中搜索 "start" 属性组,如果当前选择了实例,则还会搜索其父级。如果未找到 "inetd_start" 属性组,将以类似方式进行搜索。
找到属性后,将删除所有以 envvar 开始并且后跟 "=" 的值,同时添加值 "envvar=value"。有关修改属性所需的特权,请参见 smf_security(5)。
将当前选择的 pg 属性组的 name 属性设置为类型 type 的指定值。有关可用属性类型的列表,请参见 scf_value_create(3SCF)。如果属性已经存在并且 type 与属性中的现有 type 不一致,子命令将失败。值可能用双引号引住。包含双引号或反斜杠的字符串值必须用双引号引住,包含的双引号和反斜杠必须用反斜杠引住。如果命名属性不存在,只要指定类型,即创建属性。有关创建或修改属性所需的特权,请参见 smf_security(5)。多个值将按照它们的指定顺序存储。
如果 method_name 属性组具有类型 "method",则通过更改该属性组中的 "environment" 属性删除服务或实例的方法环境变量。如果未指定 method_name 并且使用 -i 选项,则当前选择实例时将使用 "method_context" 属性组。如果使用 -s 选项并且当前选择了服务,则会使用其 "method_context" 属性组。如果使用 -s 选项并且当前选择了实例,则会使用其父级的 "method_context" 属性组。如果既不使用 -i 选项也不使用 -s 选项,将在当前选择的实体中搜索 "start" 属性组,如果当前选择了实例,则还会搜索其父级。如果未找到 "inetd_start" 属性组,将以类似方式进行搜索。
找到属性后,将删除所有以 envvar 开始并且后跟 "=" 的值。有关修改属性所需的特权,请参见 smf_security(5)。
为 SMF 系统信息库中的软件事件和故障管理问题生命周期事件设置通知参数。
用于设置 SMF 状态转换的系统范围的通知参数。请参见 smf(5)。这些通知参数是在 svc:/system/svc/global:default 中设置的,与当前选择的 svccfg 无关。该子命令会刷新其所修改的全部实例。
FMA 事件类或别名的逗号分隔列表。请参见 smf(5) 通知参数。
SMF 状态转换的逗号分隔列表。请参见 smf(5) 通知参数。
实施的每种通知机制的 URI 格式:对于 SMTP,使用:
mailto:addr[?header1=value1[&header2=value2]]
...或者:
mailto:{[active]|inactive}
...对于 SNMP 陷阱,使用:
snmp:{[active]|inactive}
sasinfo(1M) 中定义的参数 msg_template 可以设置为 mailto URI 中的头值。例如:
mailto:root@localhost?msg_template=<path to template file>
SNMP 陷阱指向 /etc/net-snmp/snmp/snmpd.conf 中的 trapsink 指令定义的或 SNMP 陷阱通知守护进程指定的主机。请参见 sasinfo(1M)。
通知参数特定于指定的类或 tset 并覆盖预先存在的通知参数。活动/非活动表单不会覆盖以前的通知参数。它仅启用或禁用指定类或 tset 的通知机制。设置通知参数时可隐式将它们设置为活动状态。
显示指定类或 tset 的现有通知参数。使用 -g 选项,会显示 svc:/system/svc/global:default 中的通知参数。如果省略 tset,表示使用 all。
删除指定类或 tset 的现有通知参数。使用 -g 选项,会删除 svc:/system/svc/global:default 中的通知参数。
显示用于当前所选实例的快照。
将当前所选实例及其服务的管理定制恢复到记录在命名快照中的属性。如果未提供参数,请使用当前所选的快照,然后在成功时取消选择该快照。可以通过 svcadm(1M) 的 refresh 子命令将已更改的属性值设置为活动状态。有关更改属性所需的特权,请参见 smf_security(5)。
将当前快照更改为 name 命名的快照。如果未指定 name,取消选择当前选择的快照。快照是只读的。
将当前配置的值提交到正在运行的快照,并使这些值可供当前选择的实例使用。如果系统信息库子命令尚未用于选择系统信息库,则指示该实例的重启程序重新读取更新的配置。
示例 1 导入服务说明
以下示例导入命令行上指定的 XML 清单中 seismic 服务的服务说明。
# svccfg import /var/svc/manifest/site/seismic.xml
请注意清单必须遵守 service_bundle(4) 中指定的格式。
示例 2 导出服务说明
要在本地系统中导出服务说明,请执行以下命令:
# svccfg export dumpadm >/tmp/dump.xml
示例 3 删除服务实例
要删除服务实例,请执行以下命令:
# svccfg delete network/inetd-upgrade:default
示例 4 检查备用系统信息库中的属性
要在装入备用系统信息库之后检查服务的属性状态,请使用如下所示的命令序列。例如,用户可以使用此类命令确定是否在特定的系统信息库备份中启用了服务。
# svccfg svc:> repository /etc/svc/repository-boot svc:> select telnet:default svc:/network/telnet:default> listprop general/enabled general/enabled boolean false svc:/network/telnet:default> exit
示例 5 启用调试
要修改启动方法的 LD_PRELOAD 并在调试功能处于活动状态的情况下启用 libumem(3LIB),请执行以下命令:
$ svccfg -s system/service setenv LD_PRELOAD libumem.so $ svccfg -s system/service setenv UMEM_DEBUG default
示例 6 使用 describe 子命令
以下命令说明 describe 子命令的用法。
# svccfg -s console-login describe ttymon ttymon application ttymon/device astring /dev/console terminal device to be used for the console login prompt ttymon/label astring console appropriate entry from /etc/ttydefs ...
示例 7 配置通知首选项
以下命令为 SMF 服务状态转换事件配置通知首选项。
# svccfg setnotify -g from-online,to-maintenance \ mailto:admin@somehost.com
示例 8 启用 SNMP 通知
以下命令对故障管理事件启用 SNMP 通知。
# svccfg setnotify problem-diagnosed,problem-updated \ mailto:admin@somehost.com snmp:
示例 9 列出通知设置
以下命令列出故障管理事件的通知设置。
# svccfg listnotify problem-diagnosed,problem-updated Event: problem-diagnosed Notification Type: smtp active: true to: admin@somehost.com Notification Type: snmp active: true Event: problem-updated Notification Type: smtp active: true to: admin@somehost.com Notification Type: snmp active: true
使用 editprop 子命令时运行的命令。缺省编辑器是 vi(1)。
将返回下列退出值:
成功执行。
一个或多个子命令导致失败。错误消息将写入标准错误流中。
指定的命令行选项无效。
有关以下属性的说明,请参见 attributes(5):
|
交互式输出为 Uncommitted(未确定)。调用和非交互式输出为 Committed(已确定)。
svcprop(1)、svcs(1)、sasinfo(1M)、svcadm(1M)、svc.configd(1M)、libscf(3LIB)、libumem(3LIB)、scf_service_add_pg(3SCF)、scf_value_create(3SCF)、contract(4)、service_bundle(4)、attributes(5)、fnmatch(5)、smf(5)、smf_method(5)、smf_security(5)、smf_template(5)