JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中管理服务和故障     Oracle Solaris 11.1 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  管理服务(概述)

2.  管理服务(任务)

监视 SMF 服务

监视服务(任务列表)

如何列出服务的状态

如何列出服务的定制信息

如何显示依赖某个服务实例的服务

如何显示某个服务所依赖的服务

如何设置 SMF 转换事件的通知

管理 SMF 服务

管理 SMF 服务(任务列表)

对于 SMF 使用 RBAC 权限配置文件

如何创建 SMF 服务

如何禁用服务实例

如何启用服务实例

如何重新启动服务

如何恢复处于维护状态的服务

如何创建 SMF 配置文件

如何手动创建 SMF 配置文件

如何应用 SMF 配置文件

配置 SMF 服务

配置 SMF 服务(任务列表)

如何修改 SMF 服务属性

如何修改一个服务的多个属性

如何修改文件配置的服务

如何更改服务的环境变量

如何更改由 inetd 控制的服务的属性

如何删除服务的定制信息

如何修改由 inetd 控制的服务的命令行参数

如何转换 inetd.conf

使用运行控制脚本

使用运行控制脚本(任务列表)

如何使用运行控制脚本来停止或启动传统服务

如何添加运行控制脚本

如何禁用运行控制脚本

如何将运行控制脚本转换为 SMF 服务

对服务管理工具进行故障排除

SMF 故障排除(任务列表)

如何调试未启动的服务

如何修复已损坏的系统信息库

如何在不启动任何服务的情况下引导

如何以详细模式进行引导

system/filesystem/local:default 服务在系统引导期间失败时,如何强制出现 sulogin 提示符

3.  使用 Fault Manager

索引

管理 SMF 服务

本节包括有关管理 SMF 服务的信息。

管理 SMF 服务(任务列表)

以下任务列表说明了管理 SMF 服务所需的过程。

任务
说明
参考
创建服务。
允许通过 SMF 服务来管理脚本。
禁用服务实例。
停止正在运行的服务并禁止重新启动该服务。
启用服务实例。
启动服务。另外,在以后重新引导系统时,该服务将重新启动。
重新启动服务。
重新启动服务,而不必使用单独的命令先禁用服务,然后再启用服务。
恢复处于维护状态的服务。
说明如何清除和重新启动处于维护状态的服务。
创建配置文件。
创建配置文件可轻松部署定制信息,而无需运行 svccfg 命令来进行所有更改。
手动创建配置文件以轻松部署定制信息。
应用配置文件。
使用配置文件中的信息根据需要禁用、启用或定制服务。

对于 SMF 使用 RBAC 权限配置文件

可以使用 RBAC 权限配置文件来允许用户管理某些 SMF 服务,而不必授予用户 root 访问权限。权限配置文件定义用户可以运行哪些命令。已经为 SMF 创建了下列配置文件:

有关授权的具体信息,请参见 smf_security(5) 手册页。有关指定权限配置文件的说明,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何更改用户的安全属性"

如何创建 SMF 服务

管理员经常编写一些脚本,用它们在系统引导过程中执行相关任务。以下过程说明了如何充分利用 SMF 的优点来支持脚本。

开始之前

确定脚本需要使用何种服务模型。如果脚本执行一些任务然后退出,而不启动任何长时间运行的进程,则它很可能是瞬态服务。如果脚本启动长时间运行的守护进程然后退出,则它是合同服务。有关服务模型的更多信息,请参见 svc.startd(1M) 手册页的“持续时间”部分。

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 将启动方法脚本复制到 /lib/svc/method/ex_svc
  3. 创建临时清单。

    在此示例中,服务名称为 site/ex_svc,是瞬态服务,所以不需要结束方法。

    # svcbundle -o /tmp/ex_svc.xml -s service-name=site/ex_svc \
          -s start-method=/lib/svc/method/ex_svc -s model=transient
  4. 对清单进行任何其他更改。

    验证在 /tmp/ex_svc.xml 中的清单内容是您所需的。

  5. 将清单复制到正确目录。
    # cp /tmp/ex_svc.xml /lib/svc/manifest/site/ex_svc.xml
  6. 导入清单并启动服务。
    # svcadm restart svc:/system/manifest-import

示例 2-12 自动安装生成的清单

要自动将清单安装在 /lib/svc/manifest/site 中,请使用带 -i 选项的 svcbundle 命令,如下所示。运行此命令可以代替步骤 3 中的命令,且无需执行任何其他步骤。

# svcbundle -i -s service-name=site/ex_svc \
        -s start-method=/lib/svc/method/ex_svc -s model=transient

如何禁用服务实例

请使用以下过程禁用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被禁用,其禁用状态将持续到重新引导之后。使服务重新运行的唯一方法就是启用服务。

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 检查要禁用的服务的依赖项。

    如果此服务具有您需要的依赖项,则无法禁用此服务。

    # svcs -D FMRI
  3. 禁用此服务。
    # svcadm disable FMRI

如何启用服务实例

请使用以下过程启用服务。服务状态更改记录在服务配置系统信息库中。启用服务后,启用状态将在系统重新引导后保持不变,但是该服务仅在满足所有依赖性时才会启动。

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 启用服务。
    # svcadm enable FMRI
  3. 验证是否已启用该项服务。
    # svcs -x FMRI
  4. 启用服务依赖性。

    如果禁用了所需的依赖性,请使用以下命令启用它们:

    # svcadm enable -r FMRI

示例 2-13 在单用户模式下启用服务

以下命令启用 rpcbind-t 选项在临时模式下启动服务,此模式不会更改服务系统信息库,因此这种更改在重新引导后不会保留。-r 选项以递归方式启动指定服务的所有依赖性。

# svcadm enable -rt rpc/bind

如何重新启动服务

如果由于配置更改或其他原因而需要重新启动当前正在运行的服务,那么,可以重新启动该服务,而不必键入单独的命令来先停止后启动该服务。只有必须在禁用服务之后、启用服务之前更改配置时,才需要特意地先禁用服务,然后再启用。

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 重新启动服务。
    # svcadm restart FMRI

如何恢复处于维护状态的服务

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 确定服务为何处于维护状态。
    # svcs -x FMRI

    请查阅提及的日志文件或手册页来确定错误。

  3. 确定依赖该服务的任何进程是否已停止。

    通常,当某个服务实例处于维护状态时,与该实例相关的所有进程均已停止。但是,您应当在继续操作之前确保这一点。以下命令列出了选定 FMRI 的合同 ID。

    # svcs -o CTID FMRI
  4. 可选中止剩余的所有进程。

    对于由 svcs 命令显示的所有进程重复此步骤。

    # pkill -9 -c CTID
  5. 恢复此服务。
    # svcadm clear FMRI

如何创建 SMF 配置文件

配置文件是一个 XML 文件,其中列出了各个 SMF 服务以及每个服务是应当处于启用状态还是禁用状态。使用配置文件,可以同时启用或禁用多个服务。配置文件还用于设置属性值、添加属性值,甚至用于创建服务和服务实例。并非所有的服务都需要列在配置文件中。每个配置文件只需包括那些为了使其有用而必须启用或禁用的服务。

svc:/system/rmtmpfiles 服务负责在引导时清理 /tmp 目录。缺省情况下,rmtmpfiles 服务不会清理 /var/tmp。如果希望在引导过程中清理 /var/tmp ,可以通过将 options/clean_vartmp 属性设置为 true 来改变该服务的行为。如果希望在多个系统上这样做,最简单的方法是创建配置文件并将其放置在这些系统上的 /etc/svc/profile/site 中。

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 创建配置文件。

    此命令在 /tmp/rmtmpfiles.xml 中新建一个配置文件,然后可以根据需要将其复制到 /etc/svc/profiles/site 中。

    # svcbundle -o /tmp/rmtmpfiles.xml -s service-name=system/rmtmpfiles \
            -s bundle-type=profile -s service-property=options:clean_vartmp:boolean:true
  3. 将配置文件复制到正确目录。
    # cp /tmp/rmtmpfiles.xml /etc/svc/profile/site/rmtmpfiles.xml
  4. 重新启动 manifest-import 服务将配置文件应用到系统。
    # svcadm restart svc:/system/manifest-import

示例 2-14 在创建配置文件后自动安装 SMF 配置文件

-i 选项用于安装生成的配置文件。该命令会将配置文件写入 /etc/svc/profile/site/rmtmpfiles.xml 中。而且,该命令将重新启动 manifest-import 服务以应用配置文件。

# svcbundle -i -s service-name=system/rmtmpfiles \
        -s bundle-type=profile -s service-property=options:clean_vartmp:boolean:true

如何手动创建 SMF 配置文件

配置文件是一个 XML 文件,其中列出了各个 SMF 服务以及每个服务是应当处于启用状态还是禁用状态。使用配置文件,可以同时启用或禁用多个服务。配置文件还用于设置属性值、添加属性值,甚至用于创建服务和服务实例。并非所有的服务都需要列在配置文件中。每个配置文件只需包括那些为了使其有用而必须启用或禁用的服务。

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 创建配置文件。

    在此示例中,svccfg 命令用于创建表示当前系统上本地定制信息的配置文件。或者,也可以创建现有配置文件的副本以对其进行编辑。

    # svccfg extract> profile.xml

    如果您具有大量相同的系统,或者您希望对系统配置进行归档以供日后恢复,则可能需要使用此过程来创建唯一版本的 SMF 配置文件。

  3. 编辑 profile.xml 文件以进行任何所需的更改。
    1. service_bundle 声明中更改配置文件的名称。

      在以下示例中,要将配置文件的名称更改为 profile

      # cat profile.xml
        ...
      <service_bundle type=`profile` name=`profile`
          xmIns::xi='http://www.w3.org/2003/XInclude'
        ...
    2. 删除所有不应当由该配置文件管理的服务。

      对于每个服务,删除三个描述该服务的行。每个服务说明都以 <service 开头并以 </service 结尾。以下示例说明 LDAP 客户机服务的说明行。

      # cat profile.xml
       ...
       <service name='network/ldap/client' version='1' type='service'>
               <instance  name='default' enabled='true'/>
       </service>
    3. 添加所有应当由该配置文件管理的服务。

      每个服务必须使用上面所示的三行语法来进行定义。

    4. 如有必要,请更改选定服务的启用标志。

      在以下示例中,sendmail 服务处于禁用状态。

      # cat profile.xml
        ...
        <service  name='network/smtp' version='1' type='service'>
          <instance  name='sendmail' enabled='false'/>
        </service>
        ...
  4. 如有必要,请应用新配置文件。

    有关说明,请参见如何应用 SMF 配置文件

如何应用 SMF 配置文件

  1. 成为管理员,或承担拥有 Service Management (服务管理)权限配置文件的角色。

    有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  2. 应用配置文件。

    在此示例中,应用的是 profile.xml 配置文件。

    # svccfg apply profile.xml