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 服务所需的过程。

任务
说明
参考
修改服务。
修改指定服务实例的服务属性。
修改指定服务实例的多个属性。
修改服务实例的配置文件。
修改服务实例的环境变量。
删除服务的 admin 层中的定制信息。
修改 inetd 服务。
更改由 inetd 控制的服务的配置属性。
更改由 inetd 控制的服务的启动选项。
转换 inetd.conf 项。
inetd 服务转换为可使用 SMF 来监视的传统运行服务。

如何修改 SMF 服务属性

此过程说明如何修改用于标识可以启动服务的用户的属性。

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

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

  2. 更改指定给 start/user 属性的值。

    首先,指定 FMRI 来标识适当服务。然后,指定将启动该服务的 UID。

    # svccfg -s FMRI
    svc:/service: setprop start/user = astring: newlogin
  3. 刷新该服务。
    # svcadm refresh FMRI

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

以下过程说明如何方便地修改多个服务属性,而不必像 setprop 子命令要求的那样键入许多信息。在此示例中,更改了几个 DNS 服务属性。

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

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

  2. 更改属性值。

    editprop 子命令会将指定服务的属性组和属性收集到临时文件中,并调用由 VISUALEDITOR 环境变量指定的程序来编辑该临时文件。有关更多信息,请参见 svccfg(1M) 手册页。

    # svccfg -s network/dns/client editprop
    
    ##
    ## The value used to construct the "nameserver" directive in resolv.conf(4).
    ##
    setprop config/nameserver = net_address: (192.168.1.10 192.168.1.11)
    
    ##
    ## The value used to construct the "search" directive in resolv.conf(4).
    ##
    # setprop config/search = astring: "example.com sales.example.com" 

    此时不保存文件。

  3. 将更改应用于所有实例。

    对文件底部的刷新行取消注释,以在保存文件和退出编辑器后,应用这些更改。

    ## Uncomment to apply these changes to all instances of this service.
    refresh

如何修改文件配置的服务

以下过程显示如何更改不是由 inetd 服务管理的服务的配置。

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

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

  2. 根据需要对配置文件进行更改。

    许多服务都有一个或多个用来定义启动或其他配置信息的配置文件。这些文件可以在服务正在运行时进行更改。只有当服务已经启动后,才能检查这些文件的内容。

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

示例 2-15 添加新 NTP 服务器

要添加一个新的 NTP 服务器来支持您的 NTP 客户机,请向 /etc/inet/ntp.conf 文件添加一个对应于该服务器的新条目。然后,重新启动 NTP 服务。此示例显示 ntp.conf 文件的外观以及如何重新启动该服务。

# cat /etc/inet/ntp.conf
   .
   .
server ntpserver1.example.com
server ntpserver2.example.com
# svcadm restart svc:/network/ntp:default

如何更改服务的环境变量

以下过程显示如何修改 cron 环境变量以帮助进行调试。

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

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

  2. 验证该服务是否正在运行。
    # svcs system/cron
    STATE          STIME    FMRI
    online         Dec_04   svc:/system/cron:default
  3. 设置环境变量。

    在本示例中,设置的是 UMEM_DEBUGLD_PRELOAD 环境变量。有关 setenv 子命令的信息,请参阅 svccfg(1M) 手册页。

    # svccfg -s system/cron:default setenv UMEM_DEBUG default
    # svccfg -s system/cron:default setenv LD_PRELOAD libumem.so
  4. 刷新和重新启动该服务。
    # svcadm refresh system/cron
    # svcadm restart system/cron
  5. 检验是否已进行更改。
    # pargs -e `pgrep -f /usr/sbin/cron`
    100657: /usr/sbin/cron
    envp[0]: LOGNAME=root
    envp[1]: LD_PRELOAD=libumem.so
    envp[2]: PATH=/usr/sbin:/usr/bin
    envp[3]: SMF_FMRI=svc:/system/cron:default
    envp[4]: SMF_METHOD=/lib/svc/method/svc-cron
    envp[5]: SMF_RESTARTER=svc:/system/svc/restarter:default
    envp[6]: TZ=GB
    envp[7]: UMEM_DEBUG=default

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

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

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

  2. 列出指定服务的属性。

    以下命令显示由 FMRI 标识的服务的所有属性。

    # inetadm -l FMRI
  3. 更改该服务的属性。

    inetd 控制的服务的每个属性都由属性名和指定的值来定义。提供属性名而不指定值会将属性重置为缺省值。有关服务属性的具体信息应包含在与该服务相关的手册页中。

    # inetadm -m FMRI property-name=value
  4. 检验属性是否已更改。

    再次列出属性以确保已进行相应的更改。

    # inetadm -l FMRI
  5. 确认更改已生效。

    确认属性更改达到了所需的效果。

示例 2-16 更改 telnettcp_trace 属性

以下示例显示如何将 telnettcp_trace 属性设置为 true。在运行 telnet 命令之后,检查 syslog 的输出,此时会发现所做的更改已经生效。

# inetadm -l svc:/network/telnet:default
SCOPE    NAME=VALUE
         name="telnet"
 .
 .
default  inherit_env=TRUE
default  tcp_trace=FALSE
default  tcp_wrappers=FALSE
# inetadm -m svc:/network/telnet:default tcp_trace=TRUE
# inetadm -l svc:/network/telnet:default
SCOPE    NAME=VALUE
         name="telnet"
 .
 .
default  inherit_env=TRUE
         tcp_trace=TRUE
default  tcp_wrappers=FALSE
# telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
login: root
Password: 
.
.
.
Last login: Mon Jun 21 05:55:45 on console
Sun Microsystems Inc.   SunOS 5.10      s10_57  May 2004
# ^D
Connection to localhost closed by foreign host.
# tail -1 /var/adm/messages
Jun 21 06:04:57 yellow-19 inetd[100308]: [ID 317013 daemon.notice] telnet[100625]
    from 127.0.0.1 32802

如何删除服务的定制信息

可以从属性、属性组和服务实例中删除定制信息。

示例 2-17 从属性中删除定制信息

此示例说明了从服务中删除定制信息的影响。首先应用定制信息,将 rmtmpfiles 服务中的 clean_vartmp 属性设置为在引导过程中对 /var/tmp 进行清理。作为特权用户类型,键入以下命令:

# svccfg -s svc:/system/rmtmpfiles setprop options/clean_vartmp = true
# svcadm refresh svc:/system/rmtmpfiles

下一步验证属性已经更改:

$ svcprop -p options/clean_vartmp svc:/system/rmtmpfiles
true

要查看定制信息,请键入以下命令:

$ svccfg -s svc:/system/rmtmpfiles listcust
options/clean_vartmp    boolean     admin      true
$ svcprop -p options/clean_vartmp -l all svc:/system/rmtmpfiles
options/clean_vartmp boolean manifest false
options/clean_vartmp boolean admin true

要删除定制信息,请作为特权用户键入以下命令:

# svccfg -s svc:/system/rmtmpfiles delcust options/clean_vartmp
 Deleting customizations for property: options/clean_vartmp

此时,当运行命令来查看定制信息时,您将看到:

$ svccfg -s svc:/system/rmtmpfiles listcust
$ svcprop -p options/clean_vartmp -l all svc:/system/rmtmpfiles
options/clean_vartmp boolean manifest false

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

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

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

  2. 列出特定服务的 exec 属性。

    以下命令显示由 FMRI 标识的服务的所有属性。添加 grep 命令会将输出限制在该服务的 exec 属性。

    # inetadm -l FMRI|grep exec
  3. 更改该服务的 exec 属性。

    具有 exec 属性的 command-syntax 集定义在启动服务时运行的命令字符串。

    # inetadm -m FMRI exec="command-syntax"
  4. 检验属性是否已更改。

    再次列出属性以确保已进行相应的更改。

    # inetadm -l FMRI

如何转换 inetd.conf

以下过程将 inetd.conf 项转换为 SMF 服务清单。无论何时向系统添加依赖 inetd 的第三方应用程序,都需要运行此过程。如果您需要更改 /etc/inetd.conf 中项的配置,也需要运行此过程。

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

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

  2. 转换 inetd.conf 项。

    inetconv 命令将选定文件中的每个项都转换为服务清单。

    # inetconv -i filename

示例 2-18 将 /etc/inet/inetd.conf 项转换为 SMF 服务清单

# inetconv -i /etc/inet/inetd.conf