◆观察服务 在早期版本的 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
【Solaris服务管理工具SMF维护】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 脚本停止或启动这些服务 。
推荐阅读
- Solaris10 SMF服务管理概要
- Solaris系统中的路由接口文件配置
- 用Solaris 10中的SMF管理Oracle数据库的运行
- 解读SMF:Solaris系统服务管理好帮手
- Solaris 9下安装使用针式打印机
- Solaris服务管理工具SMF常规任务使用
- 在Solaris 10 ZFS上安装Oracle 9i
- Solaris硬盘分区简介
- 如何在Solaris下实现Raid1
- solaris9 网络安装记录
