科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道Solaris服务管理工具SMF维护

Solaris服务管理工具SMF维护

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

"-d" 选项可显示此服务所依赖的其他服务,而 "-D" 选项可显示依赖于此服务的其他服务: 如“显著的更改”部分所述,与早期版本的 Solaris 不同,rc 脚本可能不会在引导过程中的同一时刻运行。

来源:TT服务器 2008年7月15日

关键字: 操作系统 多线程 服务器 SMF Solaris

  • 评论
  • 分享微博
  • 分享邮件

      ◆观察服务

  在早期版本的 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)

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章