JavaScript is required to for searching.
跳过导航链接
退出打印视图
手册页第 5 部分:标准、环境和宏     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

简介

Standards, Environments, and Macros

acl(5)

ad(5)

advance(5)

adv_cap_1000fdx(5)

adv_cap_1000hdx(5)

adv_cap_100fdx(5)

adv_cap_100hdx(5)

adv_cap_10fdx(5)

adv_cap_10hdx(5)

adv_cap_asym_pause(5)

adv_cap_autoneg(5)

adv_cap_pause(5)

adv_rem_fault(5)

ANSI(5)

architecture(5)

ars(5)

ascii(5)

attributes(5)

audit_binfile(5)

audit_flags(5)

audit_remote(5)

audit_syslog(5)

availability(5)

brands(5)

C++(5)

C(5)

cancellation(5)

cap_1000fdx(5)

cap_1000hdx(5)

cap_100fdx(5)

cap_100hdx(5)

cap_10fdx(5)

cap_10hdx(5)

cap_asym_pause(5)

cap_autoneg(5)

cap_pause(5)

cap_rem_fault(5)

charmap(5)

compile(5)

condition(5)

crypt_bsdbf(5)

crypt_bsdmd5(5)

crypt_sha256(5)

crypt_sha512(5)

crypt_sunmd5(5)

crypt_unix(5)

CSI(5)

datasets(5)

device_clean(5)

dhcp(5)

dhcp_modules(5)

environ(5)

eqnchar(5)

extendedFILE(5)

extensions(5)

fedfs(5)

filesystem(5)

fmri(5)

fnmatch(5)

formats(5)

fsattr(5)

grub(5)

gss_auth_rules(5)

hal(5)

iconv_1250(5)

iconv_1251(5)

iconv(5)

iconv_646(5)

iconv_852(5)

iconv_8859-1(5)

iconv_8859-2(5)

iconv_8859-5(5)

iconv_dhn(5)

iconv_koi8-r(5)

iconv_mac_cyr(5)

iconv_maz(5)

iconv_pc_cyr(5)

iconv_unicode(5)

ieee802.11(5)

ieee802.3(5)

ipfilter(5)

ipkg(5)

isalist(5)

ISO(5)

kerberos(5)

krb5_auth_rules(5)

krb5envvar(5)

KSSL(5)

kssl(5)

labels(5)

largefile(5)

ldap(5)

lf64(5)

lfcompile(5)

lfcompile64(5)

link_duplex(5)

link_rx_pause(5)

link_tx_pause(5)

link_up(5)

locale(5)

locale_alias(5)

lp_cap_1000fdx(5)

lp_cap_1000hdx(5)

lp_cap_100fdx(5)

lp_cap_100hdx(5)

lp_cap_10fdx(5)

lp_cap_10hdx(5)

lp_cap_asym_pause(5)

lp_cap_autoneg(5)

lp_cap_pause(5)

lp_rem_fault(5)

man(5)

mansun(5)

me(5)

mech_spnego(5)

mm(5)

ms(5)

MT-Level(5)

mutex(5)

MWAC(5)

mwac(5)

nfssec(5)

NIS+(5)

NIS(5)

nis(5)

nwam(5)

openssl(5)

pam_allow(5)

pam_authtok_check(5)

pam_authtok_get(5)

pam_authtok_store(5)

pam_deny(5)

pam_dhkeys(5)

pam_dial_auth(5)

pam_krb5(5)

pam_krb5_migrate(5)

pam_ldap(5)

pam_list(5)

pam_passwd_auth(5)

pam_pkcs11(5)

pam_rhosts_auth(5)

pam_roles(5)

pam_sample(5)

pam_smbfs_login(5)

pam_smb_passwd(5)

pam_tsol_account(5)

pam_tty_tickets(5)

pam_unix_account(5)

pam_unix_auth(5)

pam_unix_cred(5)

pam_unix_session(5)

pam_user_policy(5)

pam_zfs_key(5)

pkcs11_kernel(5)

pkcs11_kms(5)

pkcs11_softtoken(5)

pkcs11_tpm(5)

pkg(5)

POSIX.1(5)

POSIX.2(5)

POSIX(5)

privileges(5)

prof(5)

pthreads(5)

RBAC(5)

rbac(5)

regex(5)

regexp(5)

resource_controls(5)

sgml(5)

smf(5)

smf_bootstrap(5)

smf_method(5)

smf_restarter(5)

smf_security(5)

smf_template(5)

solaris10(5)

solaris(5)

solbook(5)

stability(5)

standard(5)

standards(5)

step(5)

sticky(5)

suri(5)

SUS(5)

SUSv2(5)

SUSv3(5)

SVID3(5)

SVID(5)

tecla(5)

teclarc(5)

term(5)

threads(5)

trusted_extensions(5)

vgrindefs(5)

wbem(5)

xcvr_addr(5)

xcvr_id(5)

xcvr_inuse(5)

XNS4(5)

XNS(5)

XNS5(5)

XPG3(5)

XPG4(5)

XPG4v2(5)

XPG(5)

zones(5)

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

smf

- 服务管理工具

描述

Solaris 服务管理工具定义了一种编程模型,用以提供持久运行的应用程序,这些应用程序称为服务。此工具还提供运行服务的基础结构。服务可以表示运行的应用程序、设备软件状态或一组其他服务。服务在框架中由服务实例对象表示,这些对象是服务对象的子项。实例对象可以继承或覆盖父服务对象的配置,这使多个服务实例可以共享配置信息。所有服务和实例对象都包含在一个范围内,该范围表示配置信息的集合。本地 Solaris 实例的配置称为“本地主机”范围,这是当前唯一支持的范围。

每个服务实例都使用故障管理资源标识符 (fault management resource identifier, FMRI) 来命名(模式为 svc:)。例如,在系统启动时启动的 syslogd(1M) 守护进程是具有以下名称的缺省服务实例:

svc://localhost/system/system-log:default
svc:/system/system-log:default
system/system-log:default

许多命令也允许使用 FMRI 缩写。有关此类示例,请参见 svcs(1) 手册页。

在上面的示例中,default 是实例名称,system/system-log 是服务名称。服务名称可包含多个用斜杠 (/) 分隔的组成部分。所有组成部分(最后一个组成部分除外)构成了服务的类别。站点特定的服务应当用以 site 开头的类别来命名。

服务实例可以启用,也可以禁用。所有服务都可以通过 svcadm(1M) 命令来启用或禁用。

可通过 svcs(1) 命令来显示系统上管理服务实例的列表。

当管理员删除由标准位置中的清单或配置文件支持的条目时,该条目会被屏蔽,且通过向 SMF 发送普通查询无法看到该条目。使用 svccfg listcust 可以浏览已屏蔽的条目,将 delcust 子命令与 svccfg 结合使用可将其删除。有关详细信息,请参见 svccfg(1M)

依赖性

服务实例可以与一组实体具有依赖关系,这些实体可包含服务、实例和文件。依赖性控制着启动和自动停止服务的时间。当未满足已启用服务的依赖性时,服务就保持脱机状态。当满足其依赖性时,就会启动服务。如果启动成功,服务将转换为联机状态。不同于服务和实例,不会在创建或删除文件时动态地评估文件依赖性。只对它们评估一次。

依赖性是否满足将由其分组确定:

require_all

当所有引用的服务正在运行(联机或降级)或者所有指示的文件都存在时满足。

require_any

当引用的任一服务正在运行(联机或降级)或者至少有一个指示的文件存在时满足。

optional_all

当引用的服务正在运行(联机或降级)或因没有管理操作而未运行(禁用、维护、不存在或脱机等待必须有管理操作才能启动的依赖项)时满足。不完整的服务也满足可选的依赖性。

exclude_all

当所有引用的服务都已禁用、处于维护状态或者引用的服务或文件不存在时满足。

在运行(联机或降级)期间,如果由 require_all require_anyoptional_all 依赖性引用的服务停止或刷新,SMF(Service Management Facility,服务管理工具)将考虑服务停止的原因以及依赖性的 restart_on 属性以确定是否停止该服务。

                   |  restart_on value
event              |  none  error restart refresh
-------------------+------------------------------
stop due to error  |  no    yes   yes     yes
non-error stop     |  no    no    yes     yes
refresh            |  no    no    no      yes

如果服务出现硬件错误或软件错误(如核心转储),则认为该服务已经因出错而停止。对于 exclude_all 依赖性,如果引用的服务已启动,但 restart_on 属性不是 none,也将停止该服务。

服务的依赖性可通过 svcs(1) 或 svccfg(1M) 列出,也可通过svccfg(1M) 进行修改。

重启程序

每个服务都由一个重启程序来管理。主重启程序 svc.startd(1M) 管理整个服务实例集及其依赖项的状态。主重启程序代表其服务操作,其操作对象是委托重启程序,委托重启程序可以为特定的应用程序类提供特定的执行环境。例如,inetd(1M) 是一个委托重启程序,它为其服务实例提供一个由网络连接构成的初始环境作为输入和输出文件描述符。委托给 inetd(1M) 的每个实例都处于联机状态。虽然特定实例的守护进程可能未运行,但该实例已经可运行。

由于当实例转为联机状态时将满足依赖性,因此 svc.startd(1M) 将调用其他实例的启动方法或指示委托重启程序执行此类操作。这些操作可能会重叠。

可使用 svcs(1) 检查当前的服务集及关联的重启程序。所有重启程序使用的公共配置的说明在 smf_restarter(5) 中指定。

方法

每个服务或服务实例都必须定义一组启动、停止和(可选)刷新该服务的方法。有关 svc.startd(1M) 以及类似 fork(2)-exec(2) 重启程序的方法约定的更完整说明,请参见 smf_method(5)

管理方法(如将传统配置信息捕获到系统信息库的方法)将在 svccfg(1M) 手册页中讨论。

服务的方法可使用 svccfg(1M) 命令列出和修改。

状态

每个服务实例始终处于某一明确定义的状态,具体取决于其依赖性、其方法的执行结果以及其潜在合同事件。系统定义了以下状态:

UNINITIALIZED

这是所有服务实例的初始状态。实例将根据 svc.startd(1M) 或相应重启程序的计算结果转为维护、脱机或禁用状态。

OFFLINE

实例已启用,但尚未运行或无法运行。如果重启程序成功执行服务启动方法或等效方法,实例将转为联机状态。如果执行失败,则会导致实例处于降级或维护状态。管理操作会导致实例处于初始化状态。

ONLINE

实例已启用且正在运行或可以运行。联机状态的具体特性是应用程序/模型特定的,由负责服务实例的重启程序进行定义。当满足所有依赖性时,联机是正确配置的服务的预期运行状态。实例失败会导致其处于降级或维护状态。如果实例所依赖的服务失败,则会导致其处于脱机或降级状态。

DEGRADED

实例已启用且正在运行或可以运行。不过,相对于正常运行而言,实例是以有限的功能运行的。实例失败会导致其处于维护状态。如果实例所依赖的服务失败,则会导致其处于脱机或降级状态。功能恢复后,应会将实例转为联机状态。

MAINTENANCE

实例已启用,但无法运行。需要管理操作(通过 svcadm clear 执行)才能使实例脱离维护状态。如果管理操作正在进行中,维护状态可能是临时所处的状态。

DISABLED

实例已禁用。使服务转换为脱机状态,最终只有满足所有依赖性时才会恢复联机状态。

LEGACY-RUN

此状态表示不通过服务管理工具进行管理的传统实例。处于此状态的实例已在某一时间点启动,可能正在运行,也可能未在运行。只能使用该工具观察实例,不能将实例转换为其他状态。

状态也会发生转换,但会导致返回到最初的状态。

事件通知

SMF 允许使用 SNMP(Simple Network Management Protocol,简单网络管理协议)或 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)通知状态转换。该工具会发布状态转换的信息事件,以供通知守护进程(如 snmp-notify(1M)sasinfo(1M))使用。已禁用服务的 SMF 状态转换不会生成通知,除非转换的最终状态为禁用且该转换存在通知参数。对于初始和最终状态相同的转换,也不会为其生成通知。

通知参数

FMA(Fault Management Architecture,故障管理体系结构)事件的通知参数存储在 svc:/system/fm/notify-params:default 中,但 SMF 状态转换所生成的信息事件除外。这些事件存储在服务中或存储在转换服务的实例中。在 svc:/system/svc/global:default 中,可在系统范围设置 SMF 状态转换所生成事件的通知参数。当在转换实例中找不到组合查找(如 scf_instance_get_pg_composed(3SCF) 中所述)时,将使用系统范围通知参数。可使用 svccfg(1M) 处理通知参数。可使用 DTD(document type definition,文档类型定义)中描述的 notification_parameters 元素在服务清单或配置文件中配置通知参数。下面列举了一个示例:

<notification_parameters>
     <event  value='from-online' />
     <type name='smtp' active="false">
        <parameter name='to'>
            <value_node value='root@local' />
            <value_node value='admin-alias@eng' />
        </parameter>
     </type>
     <type name='snmp' />
</notification_parameters>

events 是一个用逗号分隔的 SMF 状态转换集列表或一个用逗号分隔的 FMA 事件类列表。events 不能混合包含 SMF 状态转换集和 FMA 事件类。

为了方便起见,标记 problem- {diagnosed,updated,repaired,resolved} 描述了 FMA 子系统诊断出的问题的生命周期:包括初始诊断、中期更新和最终问题解决。这些标记是基础 FMA 协议事件类 (全部位于 list.* 分层结构中) 的别名,但在配置通知首选项时不能使用后者。

problem-diagnosed

FMA 子系统诊断出了新问题。诊断包含由一个或多个可疑项组成的列表,系统可能(根据需要)已将这些可疑项自动隔离以防止进一步发生错误。问题在事件有效载荷中问题由 UUID(Universally Unique Identifier,通用唯一标识符)进行标识,描述此问题解决生命周期的其他事件会引用匹配的 UUID。

problem-updated

问题诊断中的一个或多个可疑资源已修复、替换或被视为没有故障(或再次出现了故障),但列表中至少保留了一个故障资源。修复可能是 fmadm 命令行(fmadm repaired、fmadm acquit、fmadm replaced)的结果,也可能是自动检测到的(如通过检测部件序列号更改)。

problem-repaired

问题诊断中的所有可疑资源均已修复、解决或被视为无故障。在此阶段,部分或全部资源可能仍处于隔离状态。

problem-resolved

问题诊断中的所有可疑资源均已修复、解决或被视为无故障并且不再处于隔离状态(例如,曾经是可疑项并处于脱机状态的 CPU 现在又重新恢复联机状态;这种取消隔离操作通常自动执行)。

状态转换集的定义如下:

to-<state>

最终转换状态为 <state> 的所有转换的集合。

from-<state>

初始转换状态为 <state> 的所有转换的集合。

<状态>

初始转换状态为 <state> 的所有转换的集合。

all

所有转换的集合。

状态的有效值包括:维护、脱机、禁用、联机和降级。转换集定义的示例如下:maintenancefrom-onlineto-degraded

属性和属性组

上述依赖性、方法、委托重启程序和实例状态以服务或服务实例的属性或属性组形式表示。服务或服务实例具有任意数量的属性组,这些属性组用于存储应用程序数据。以这种方式使用特性组时,可以使应用程序的配置派生可供系统信息库提供给该工具中的所有数据的属性。应用程序也可以在框架中使用适当的 service_bundle(4) DTD 子集表示其配置数据。

属性查找是组合查找。如果在服务实例中未找到属性组/属性组合,大部分命令以及 libscf(3LIB) 的高级接口将在包含该实例的服务中搜索相同的属性组/属性组合。这样可以在服务实例之间共享公共配置。组合可视为服务实例与其父服务之间的继承关系。

属性将受到保护,以防被未经授权的进程修改。请参见 smf_security(5)

通用属性组

通用属性组适用于所有服务实例。该属性组包含以下属性:

enabled (boolean)

指定是否启用实例。如果实例上不存在此属性,SMF 将无法告知实例的重启程序有关实例的存在情况。

restarter (fmri)

此服务的重启程序。有关更多信息,请参见“重启程序”一节。如果未设置此属性,将使用缺省的系统重启程序。

complete (astring)

该服务是完整的,还是不应启动的部分定义。此属性会在清单导入时自动设置。此外,没有此属性但顺利针对模板定义进行验证(请参见 scf_tmpl_validate_fmri(3SCF))的实例会由 svcadm(1M) 在启用时创建此属性。

系统信息库由标准位置中文件的管理定制、当前状态和缺省值的组合集合而成。由 SMF 管理的文件系统位置中的清单定义的服务、实例、属性组和属性始终在系统信息库中准确表示。运行时由管理员或其他程序执行的定制被捕获并存储在系统信息库中。

属性在系统信息库中可以具有不同的值,用于反映清单、配置文件和管理定制的不同设置。缺省情况下向用户和服务提供哪一个值由名为 layers 的简单优先级机制仲裁。

SMF 跟踪四个层。按优先级降序,它们是:

admin

由交互使用 SMF 命令或库进行的任何更改。此层具有最高优先级。

site-profile(站点配置文件)

/etc/svc/profile/site 目录中的文件,或传统 /etc/svc/profile/site.xml/var/svc/profile/site.xml 文件中的任何值。

system-profile(系统配置文件)

系统配置文件位置 /etc/svc/profile/generic.xml/etc/svc/profile/platform.xml 中的任何值。

manifest(清单)

系统清单位置 /lib/svc/manifest/var/svc/manifest 中的任何值。

任何单独的层中不能有属性冲突。admin 层中的冲突属性只是覆盖之前的属性。如果任何其他层中的多个文件提供该同一属性,并且该属性未在更高的层中设置,则整个实例标记为冲突,并且不会由 svc.startd(1M) 启动,直到冲突定义被去除,或在更高的层设置该属性。请求单个值(包括 svccfgsvcprop)的其他 libscf 使用者看到所有适当的值中的随机属性设置。我们不保证返回哪个冲突值。

快照

有关系统信息库中每个实例的历史数据由服务管理工具进行维护。此数据以只读快照形式提供,用于管理检查和回滚。可能会提供以下快照类型集:

initial

由管理员创建的或安装软件包期间生成的实例的初始配置。

previous

执行管理撤消操作时捕获的当前配置。

running

正在运行的实例配置。

start

成功转换为联机状态期间所捕获的配置。

可使用 svccfg(1M) 命令与快照进行交互。

专用属性组

某些属性组将标记为 non-persistent。这些组不会在快照中进行备份,其内容在系统引导期间会被清除。此类组通常存放活动程序状态,此状态无需在系统重新启动后存在。

配置系统信息库

每个服务实例的当前状态以及与服务和服务实例关联的属性都存储在由 svc.configd(1M) 管理的系统信息库中。

服务管理工具数据的系统信息库由 svc.configd(1M) 管理。

服务束、清单和配置文件

与服务或服务实例关联的信息存储在配置系统信息库中,可作为 XML 文件导出。此类 XML 文件称作服务束,是可移植的,很适合用于备份。服务束分为以下几种类型:

清单

包含与特定服务或服务实例集关联的完整属性集的文件。

配置文件

包含每个实例的 enabled 属性(在通用属性组中为布尔型)的一组服务实例和值的文件。

配置文件也可以包含服务和实例中属性的配置值。模板元素不能在配置文件中定义。

配置文件可以使用来自 DTD 的一组宽松元素,如 service_bundle(4) 中所述。要使用这些元素,应向 DOCTYPE 条目添加以下定义:

<!ENTITY % profile "INCLUDE">
<!ENTITY % manifest "IGNORE">

可使用 svccfg(1M) 命令在系统信息库中导入或导出服务束。有关服务束文件格式的说明以及有关制作服务束的准则,请参见 service_bundle(4)

里程碑

smf 里程碑是一种服务,它聚合了多个服务依赖性。通常,里程碑本身并不执行任何有用的操作,但它声明一种其他服务可以依赖的特定系统就绪状态。一个示例就是名称/服务里程碑,它仅依赖当前启用的名称服务。

传统启动脚本

/etc/rc?.d 目录中的启动程序作为相应运行级别的里程碑的一部分执行:

/etc/rcS.d

milestone/single-user:default

/etc/rc2.d

milestone/multi-user:default

/etc/rc3.d

milestone/multi-user-server:default

每个程序的执行都表示为程序路径所指定的功能简化的服务实例。这些实例保持特殊的 legacy-run 状态。

这些实例没有已启用属性(在通用属性组中为 boolean 类型),通常无法使用 svcadm(1M) 命令进行处理。系统不会对这些程序执行错误诊断或重新启动。

另请参见

svcs(1)inetd(1M)snmp-notify(1M)sasinfo(1M)svcadm(1M)svccfg(1M)svc.configd(1M)svc.startd(1M)exec(2)fork(2)libscf(3LIB)scf_tmpl_validate_fmri(3SCF)strftime(3C)contract(4)service_bundle(4)smf_bootstrap(5)smf_method(5)smf_restarter(5)smf_security(5)