svccfg delete 命令不会从系统中删除服务实例。实际上 svccfg delete 命令会屏蔽该实例。运行 svccfg delete 命令后,服务清单仍存在于 /lib/svc/manifest 中。SMF 将服务配置系统信息库与文件系统内容保持同步。由于清单仍然存在于文件系统的标准位置中,因此该服务信息仍然存储在系统信息库中,只是在常规视图中被屏蔽而已。所有管理定制都会从屏蔽的实例中删除。有关屏蔽实体的说明,请参见 smf(5) 手册页。
支持服务实例的文件会在您使用 pkg 命令时更新,即使该服务实例被屏蔽也是如此。当支持服务实例的文件通过 pkg 命令更新时,SMF 数据存储会得到更新,即使该服务在视图中仍然处于屏蔽状态也是如此。当取消屏蔽服务实例时,由于该服务实例已通过 pkg 提供的文件得到更新,因此无需任何进一步的干预。要取消屏蔽服务实例,请参见如何撤消服务实例的删除操作。
使用 svcs -D 命令显示依赖于此实例的实例。删除此实例后,依赖于它的实例可能无法运行。使用 svcs -l 命令检查此实例是否是依赖于它的实例必需的相关项。
使用 svccfg delete 命令将实例从常规视图中屏蔽。使用 svcs 命令显示实例的状态。如果实例正在运行(处于 online 或 degraded 状态),则使用 svccfg delete -f 命令将该实例从常规视图中屏蔽。
$ svcs -H my-svc disabled 7:25:37 svc:/site/my-svc:default $ svccfg delete svc:/site/my-svc:default
使用 svccfg listcust -M 命令确认实例已屏蔽。诸如 svcs 之类命令应该显示错误消息,指出未找到匹配的实例。
$ svccfg listcust -M svc:/site/my-svc:default manifest MASKED general admin MASKED general/complete astring admin MASKED general/enabled boolean admin MASKED true $ svcs -H my-svc svcs: Pattern 'my-svc' doesn't match any instances
按照上面的过程所示使用 svccfg listcust -M 命令。
$ svccfg -s svc:/site/my-svc:default delcust Deleting customizations for instance: default
重新导入清单不会取消屏蔽状态。
使用 svccfg listcust -M 命令确认实例未被屏蔽。svcs 命令应显示实例的状态。