跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 5 部分:标准、环境和宏 Oracle Solaris 11.1 Information Library (简体中文) |
- 服务管理工具的引导、打包和兼容性行为
服务管理工具在提供服务清单、合并服务清单更改、描述服务配置稳定性、使用服务配置覆盖以及使用服务配置文件等方面建立了相关约定。
在系统引导期间,以及管理员或程序运行时,处理标准目录树 /lib/svc/manifest 和 /var/svc/manifest 的清单:
$ svcadm restart manifest-import
处理之前未导入,或自上一次导入以来发生更改的清单。使用散列来确定清单是否已更改。
当标准位置中的清单第一次导入时,它的属性、实例和服务作为 manifest 层的一部分添加到系统信息库。
当标准位置中的清单更新时,将自动导入它们。添加新的服务和实例,升级属性(如果它们发生变化),并在服务、实例和属性被移除时将其删除。
在引导期间,将在两个不同的阶段处理清单。
服务 svc:/system/early-manifest-import:default 是一项伪服务,负责首次清单处理。此服务仅在 svc.startd(1M) 初始化任何服务之前处理 /lib/svc/manifest 目录树中的清单,从而使 /lib/svc/manifest 中提供的服务始终以最新定义启动。由于此服务是伪服务,因此将忽略 svcadm(1M) 命令,但可以使用 svcs(1) 观察状态及获取日志文件信息。
svc:/system/manifest-import:default 服务负责第二次清单处理并按相应顺序依次导入 /lib/svc/manifest 和 /var/svc/manifest 目录树中的清单文件。
对 /var/svc/manifest 的支持是对引入 system/early-manifest-import:default 之前该目录树中所提供清单的兼容性支持。当服务可能以旧系统信息库配置启动时,由于其更新的清单尚未导入,因此 /var/svc/manifest 中所提供的服务可以会出现与升级相关的问题。同样,由于其清单文件尚未得到处理,因此新添加的服务也可能不可用或者已删除的服务仍在引导期间启动。为避免这些问题,强烈建议开发者将清单移至 /lib/svc/manifest。
请仅考虑将 *.xml 文件用于本节中介绍的操作。
early-manifest-import 和 manifest-import 服务还应用配置文件。
/etc/svc/profile/generic.xml 和 /etc/svc/profile/platform.xml 中的系统提供的配置文件导入到 system-profile 层。
/etc/svc/profile/site 目录中的站点特定的配置文件和传统站点文件 /etc/svc/profile/site.xml 和 /var/svc/profile/site.xml 导入到 site-profile 层。
管理员可以通过运行以下命令请求重新应用这些配置文件:
$ svcadm restart manifest-import
配置文件定义的属性、实例和服务的行为与由清单定义的相同。
请仅考虑将 *.xml 文件用于本节中介绍的操作。
软件包中的所有服务清单都应由类 manifest 来标识。安装和移除服务清单的类操作脚本包含在软件包子系统中。调用 pkg install 时,会导入服务清单。
调用 pkg uninstall 时,会删除清单中禁用的实例。清单中联机或降级的实例将先被禁用,然后再被删除。清单中没有剩余实例的所有服务也将被删除。
清单中所提供的每个服务组和每个属性组都应根据 attributes(5) 定义声明稳定性级别。通过了解稳定性级别,应用程序开发者可以根据服务或对象的组件是否存在或者它们是否可能跨发行版边界仍能正常使用,确定功能开发的可能性。
在 smf(5) 上下文中,稳定性值还可以跨服务的发行版边界(可包含该服务的修补程序)标识属性组中属性的预期更改范围。以下两部分对这一点进行了更详细地讨论。
service_bundle(4) 文档类型定义包含一个删除属性,该属性适用于服务清单中的每个属性组。如果该删除属性设置为 true,它会指示 svccfg(1M) 及其他清单导入工具从系统信息库中删除此属性组。如果该删除属性缺失,或者存在但设置为 false,将保留系统信息库中的属性组。
不会删除声明为稳定或发展中的属性组。可跨任何发行版边界删除声明为不稳定的属性组。
svcs(1)、svcadm(1M)、svccfg(1M)、svc.startd(1M)、libscf(3LIB)、service_bundle(4)、attributes(5)、smf(5)、smf_security(5)
smf(5) 的现有版本不支持多个系统信息库。