Solaris服务管理工具SMF维护

日期: 2008-06-19 作者:FOXL 来源:TechTarget中国

  ◆观察服务


  在早期版本的 Solaris 中,查看可用服务的唯一方法是使用 ps(1) 命令,并列出系统上所有的活动进程,然后查看与服务应用程序的名称相匹配的进程名称。遗憾的是,由于大多数系统都有许多进程,并且每次发行新版本的 Solaris 以及添加其他软件包时都会引入新服务,因此使用此方法进行跟踪非常困难。如今的许多服务已不再作为单个进程执行,这使得情况更加复杂。某些服务作为一系列进程或多线程进程执行,或者同时以这两种方式执行。


  使用新的 svcs(1) 命令,可以更容易地观察系统服务的状态。”-p” 选项可显示与服务关联的所有进程:


  % svcs -p network/smtp:sendmail


  STATE STIME FMRI
  online 18:20:30 svc:/network/smtp:sendmail
  18:20:30 655 sendmail
  18:20:30 657 sendmail


  % ps -fp 655,657


  UID PID PPID C STIME TTY TIME CMD
  root 655 1 0 18:20:30 ? 0:01 /usr/lib/sendmail -bd -q15m
  smmsp 657 1 0 18:20:30 ? 0:00 /usr/lib/sendmail -Ac -q15m


  ”-d” 选项可显示此服务所依赖的其他服务,而 “-D” 选项可显示依赖于此服务的其他服务:


  % svcs -d network/smtp:sendmail


  STATE STIME FMRI
  online 18:20:14 svc:/system/identity:domain
  online 18:20:26 svc:/network/service:default
  online 18:20:27 svc:/system/filesystem/local:default
  online 18:20:27 svc:/milestone/name-services:default
  online 18:20:27 svc:/system/system-log:default
  online 18:20:30 svc:/system/filesystem/autofs:default
  % svcs -D network/smtp:sendmail
  STATE STIME FMRI
  online 18:20:32 svc:/milestone/multi-user:default


  我们可以看到,sendmail 要求在运行之前先运行网络服务、本地文件系统服务、名称服务、系统日志守护进程以及自动安装守护进程,并且 sendmail 自身必须在到达多用户重大事件之前运行。服务启动时间(STIME 列)表明已遵循这些相关性。


  ◆更改运行级别


  SMF 引入了重大事件 (milestone)的概念,它代替了传统的运行级别概念。运行级别对计算机上运行的一组服务进行了基本描述,这些服务通常分为一个用户登录到计算机控制台所需的服务(运行级别 S),以及多个用户登录到计算机所需的服务(运行级别 2 和 3)。这些系统状态在 SMF 中表示为重大事件,重大事件是代表一组其他服务的稳定服务。”svcs -d” 可用于查看必须在到达重大事件之前运行的服务。


  svcadm(1M) 现在是设置系统缺省运行级别的首选方法。此方法是使用 milestone 子命令和有效重大事件的 FMRI 完成的:


  旧方法:编辑 /etc/inittab
  SMF 方法:svcadm milestone -d milestone/single-user:default


  ”-d” 选项表示缺省 (default) 重大事件应该设置为指定的 FMRI。如果不使用 “-d”,则 “svcadm milestone” 会立即将系统转换到指定的重大事件。


  引导过程已更新为可以识别重大事件。除了传统的 “boot -s”(引导到单用户模式)之外,现在还可以通过 “boot -m milestone=” 引导到指定的重大事件。 可以是 “single-user”、”multi-user” 或 “multi-user-server”,以及特殊的重大事件 “all”(所有已启用的联机服务)和 “none”(无任何服务)。”none” 重大事件对于修复在引导过程初期发生故障的系统可能非常有用。


  引导到单用户重大事件(使用 “-m milestone=single-user”)和旧的 “boot -s” 略有不同。如果系统已明确引导到某个重大事件,则退出控制台管理 shell 时不会像 “boot -s” 一样将系统转换到多用户模式。要在运行 “boot -m milestone=single-user” 之后转到多用户模式,请使用命令 “svcadm milestone milestone/multi-user-server:default”。


  ◆启用、禁用和监视传统服务


  一般说来,由传统 rc 脚本启动的服务(也称为传统服务)将继续以原始方式工作。这些服务将在 svcs(1) 的输出中显示,同时还显示 FMRI(基于服务 rc 脚本的路径名),但它们不受 svcadm(1M) 控制。应该通过直接运行 rc 脚本停止或启动这些服务。


  如“显著的更改”部分所述,与早期版本的 Solaris 不同,rc 脚本可能不会在引导过程中的同一时刻运行。特别是,必须在 Solaris 提供的某些 rc 脚本之前运行的脚本可能会出现问题。但是,绝大多数脚本都应该可以继续工作,而不会出现任何问题。


  ◆将新服务添加到 inetd.conf


  Internet 服务守护进程 inetd(1M) 已重新编写为 SMF 的一部分。它将所有配置数据都存储在 SMF 数据库(而不是 /etc/inet/inetd.conf)中,从而允许使用 SMF 工具控制和观察基于 inetd 的服务。大多数 Solaris 随附的基于 inetd 的服务在 inetd.conf 中不再有任何条目。为了对尚未转换为 SMF 的服务提供兼容性,仍然可以使用惯用的语法将条目添加到 inetd.conf 中,而新的 inetconv(1M) 命令可将新服务转换为 SMF 服务。inetconv 应该始终在编辑 /etc/inet/inetd.conf 之后运行;运行该命令时可以不使用任何参数。


  详细信息


  要了解有关 SMF 的详细信息,请参见以下文档:


  ◆ SMF 系统管理指南。


  ◆ 手册页(可在安装了 Solaris 10 的任何计算机上获取):


  ○ inetadm(1M)
  ○ inetconv(1M)
  ○ inetd(1M)
  ○ kernel(1M)
  ○ smf(5)
  ○ smf_bootstrap(5)
  ○ smf_method(5)
  ○ svc.startd(1M)
  ○ svcadm(1M)
  ○ svccfg(1M)
  ○ svcprop(1)
  ○ svcs(1)

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

FOXL
FOXL

相关推荐