在 Oracle® Solaris 11.2 中管理系统服务

退出打印视图

更新时间: 2014 年 7 月
 
 

删除服务

svccfg delete 命令不会从系统中删除服务实例。实际上 svccfg delete 命令会屏蔽该实例。运行 svccfg delete 命令后,服务清单仍存在于 /lib/svc/manifest 中。SMF 将服务配置系统信息库与文件系统内容保持同步。由于清单仍然存在于文件系统的标准位置中,因此该服务信息仍然存储在系统信息库中,只是在常规视图中被屏蔽而已。所有管理定制都会从屏蔽的实例中删除。有关屏蔽实体的说明,请参见 smf(5) 手册页。

支持服务实例的文件会在您使用 pkg 命令时更新,即使该服务实例被屏蔽也是如此。当支持服务实例的文件通过 pkg 命令更新时,SMF 数据存储会得到更新,即使该服务在视图中仍然处于屏蔽状态也是如此。当取消屏蔽服务实例时,由于该服务实例已通过 pkg 提供的文件得到更新,因此无需任何进一步的干预。要取消屏蔽服务实例,请参见如何撤消服务实例的删除操作

如何删除服务实例

  1. 检查要删除的实例的相关项。

    使用 svcs -D 命令显示依赖于此实例的实例。删除此实例后,依赖于它的实例可能无法运行。使用 svcs -l 命令检查此实例是否是依赖于它的实例必需的相关项。

  2. 屏蔽实例。

    使用 svccfg delete 命令将实例从常规视图中屏蔽。使用 svcs 命令显示实例的状态。如果实例正在运行(处于 onlinedegraded 状态),则使用 svccfg delete -f 命令将该实例从常规视图中屏蔽。

    $ svcs -H my-svc
    disabled        7:25:37 svc:/site/my-svc:default
    $ svccfg delete svc:/site/my-svc:default
  3. 验证实例是否已屏蔽。

    使用 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

如何撤消服务实例的删除操作

  1. 确认实例已屏蔽。

    按照上面的过程所示使用 svccfg listcust -M 命令。

  2. 取消屏蔽实例。
    $ svccfg -s svc:/site/my-svc:default delcust
     Deleting customizations for instance: default

    重新导入清单不会取消屏蔽状态。

  3. 验证实例是否已取消屏蔽。

    使用 svccfg listcust -M 命令确认实例未被屏蔽。svcs 命令应显示实例的状态。