跳过导航链接 | |
退出打印视图 | |
![]() |
在 Oracle Solaris 11.1 中管理服务和故障 Oracle Solaris 11.1 Information Library (简体中文) |
本节包括有关管理 SMF 服务的信息。
以下任务列表说明了管理 SMF 服务所需的过程。
|
可以使用 RBAC 权限配置文件来允许用户管理某些 SMF 服务,而不必授予用户 root 访问权限。权限配置文件定义用户可以运行哪些命令。已经为 SMF 创建了下列配置文件:
Service Management:用户可以添加、删除或修改服务。
Service Operator:用户可以请求对任何服务实例的状态进行更改(如重新启动和刷新)。
有关授权的具体信息,请参见 smf_security(5) 手册页。有关指定权限配置文件的说明,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何更改用户的安全属性"。
管理员经常编写一些脚本,用它们在系统引导过程中执行相关任务。以下过程说明了如何充分利用 SMF 的优点来支持脚本。
开始之前
确定脚本需要使用何种服务模型。如果脚本执行一些任务然后退出,而不启动任何长时间运行的进程,则它很可能是瞬态服务。如果脚本启动长时间运行的守护进程然后退出,则它是合同服务。有关服务模型的更多信息,请参见 svc.startd(1M) 手册页的“持续时间”部分。
在此示例中,服务名称为 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
验证在 /tmp/ex_svc.xml 中的清单内容是您所需的。
# cp /tmp/ex_svc.xml /lib/svc/manifest/site/ex_svc.xml
# svcadm restart svc:/system/manifest-import
要自动将清单安装在 /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
请使用以下过程禁用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被禁用,其禁用状态将持续到重新引导之后。使服务重新运行的唯一方法就是启用服务。
如果此服务具有您需要的依赖项,则无法禁用此服务。
# svcs -D FMRI
# svcadm disable FMRI
请使用以下过程启用服务。服务状态更改记录在服务配置系统信息库中。启用服务后,启用状态将在系统重新引导后保持不变,但是该服务仅在满足所有依赖性时才会启动。
# svcadm enable FMRI
# svcs -x FMRI
如果禁用了所需的依赖性,请使用以下命令启用它们:
# svcadm enable -r FMRI
示例 2-13 在单用户模式下启用服务
以下命令启用 rpcbind。-t 选项在临时模式下启动服务,此模式不会更改服务系统信息库,因此这种更改在重新引导后不会保留。-r 选项以递归方式启动指定服务的所有依赖性。
# svcadm enable -rt rpc/bind
如果由于配置更改或其他原因而需要重新启动当前正在运行的服务,那么,可以重新启动该服务,而不必键入单独的命令来先停止后启动该服务。只有必须在禁用服务之后、启用服务之前更改配置时,才需要特意地先禁用服务,然后再启用。
# svcadm restart FMRI
# svcs -x FMRI
请查阅提及的日志文件或手册页来确定错误。
通常,当某个服务实例处于维护状态时,与该实例相关的所有进程均已停止。但是,您应当在继续操作之前确保这一点。以下命令列出了选定 FMRI 的合同 ID。
# svcs -o CTID FMRI
对于由 svcs 命令显示的所有进程重复此步骤。
# pkill -9 -c CTID
# svcadm clear FMRI
配置文件是一个 XML 文件,其中列出了各个 SMF 服务以及每个服务是应当处于启用状态还是禁用状态。使用配置文件,可以同时启用或禁用多个服务。配置文件还用于设置属性值、添加属性值,甚至用于创建服务和服务实例。并非所有的服务都需要列在配置文件中。每个配置文件只需包括那些为了使其有用而必须启用或禁用的服务。
svc:/system/rmtmpfiles 服务负责在引导时清理 /tmp 目录。缺省情况下,rmtmpfiles 服务不会清理 /var/tmp。如果希望在引导过程中清理 /var/tmp ,可以通过将 options/clean_vartmp 属性设置为 true 来改变该服务的行为。如果希望在多个系统上这样做,最简单的方法是创建配置文件并将其放置在这些系统上的 /etc/svc/profile/site 中。
此命令在 /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
# cp /tmp/rmtmpfiles.xml /etc/svc/profile/site/rmtmpfiles.xml
# svcadm restart svc:/system/manifest-import
-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
配置文件是一个 XML 文件,其中列出了各个 SMF 服务以及每个服务是应当处于启用状态还是禁用状态。使用配置文件,可以同时启用或禁用多个服务。配置文件还用于设置属性值、添加属性值,甚至用于创建服务和服务实例。并非所有的服务都需要列在配置文件中。每个配置文件只需包括那些为了使其有用而必须启用或禁用的服务。
在此示例中,svccfg 命令用于创建表示当前系统上本地定制信息的配置文件。或者,也可以创建现有配置文件的副本以对其进行编辑。
# svccfg extract> profile.xml
如果您具有大量相同的系统,或者您希望对系统配置进行归档以供日后恢复,则可能需要使用此过程来创建唯一版本的 SMF 配置文件。
在以下示例中,要将配置文件的名称更改为 profile。
# cat profile.xml ... <service_bundle type=`profile` name=`profile` xmIns::xi='http://www.w3.org/2003/XInclude' ...
对于每个服务,删除三个描述该服务的行。每个服务说明都以 <service 开头并以 </service 结尾。以下示例说明 LDAP 客户机服务的说明行。
# cat profile.xml ... <service name='network/ldap/client' version='1' type='service'> <instance name='default' enabled='true'/> </service>
每个服务必须使用上面所示的三行语法来进行定义。
在以下示例中,sendmail 服务处于禁用状态。
# cat profile.xml ... <service name='network/smtp' version='1' type='service'> <instance name='sendmail' enabled='false'/> </service> ...
有关说明,请参见如何应用 SMF 配置文件。
在此示例中,应用的是 profile.xml 配置文件。
# svccfg apply profile.xml