运行级别的工作原理
系统的运行级别(也称为 init 状态)定义用户可以使用哪些服务和资源。系统一次只能在一个运行级别下运行。
Oracle Solaris 具有八个运行级别,下表对其进行了说明。在 /etc/inittab 文件中,缺省的运行级别指定为运行级别 3。
表 4-1 Oracle Solaris 运行级别 | | | |
0
| 电源关闭状态
| 电源关闭
|
|
|
| 单用户
| 以单用户身份运行,挂载并且能够访问某些文件系统。
|
1
| 管理状态
| 单用户
| 访问所有可用的文件系统。用户登录功能处于禁用状态。
|
2
| 多用户状态
| 多用户
| 用于正常操作。多个用户可以访问系统和所有的文件系统。除 NFS 服务器守护进程以外的所有守护进程都在运行。
|
3
|
| 多用户
| 用于共享 NFS 资源情况下的正常操作。这是缺省运行级别。
|
4
| 替换多用户状态
| 多用户
| 在缺省情况下未配置,但是可供客户使用。
|
5
| 电源关闭状态
| 电源关闭
| 关闭操作系统,以便可以安全地关闭系统电源。如有可能,自动关闭支持此功能的系统的电源。
|
6
| 重新引导状态
| 重新引导
| 停止操作系统,并重新引导至 /etc/inittab 文件中的 initdefault 项定义的状态。 缺省情况下,启用 SMF 服务 svc:/system/boot-config:default。 config/fastreboot_default 属性设置为 true 时, init 6 会根据系统的具体功能,跳过某些固件初始化和测试步骤。请参见 加快重新引导过程。
|
|
另外,svcadm 命令可用于更改系统的运行级别,方法是选择系统要在其下运行的里程碑。下表显示了与每个里程碑相对应的运行级别。
表 4-2 运行级别和 SMF 里程碑 | |
S
| milestone/single-user:default
|
2
| milestone/multi-user:default
|
3
| milestone/multi-user-server:default
|
|
系统引导到多用户状态(运行级别 3)时发生的情况
init 进程将启动,并读取 svc:/system/environment:init SMF 服务中定义的属性,以设置任何环境变量。缺省情况下,仅设置 TIMEZONE 变量。
然后,init 读取 inittab 文件并执行下列操作:
执行 action 字段中包含 sysinit 的所有进程项,以便在用户登录系统之前执行所有特殊的初始化。
将启动活动传递到 svc.startd。
有关 init 进程如何使用 inittab 文件的详细说明,请参见 init(1M) 手册页。
何时使用运行级别或里程碑
一般来说,很少需要更改里程碑或运行级别。如有必要,使用 init 命令更改到某个运行级别也将更改里程碑,该命令是适用的命令。init 命令还适用于关闭系统。
但是,使用 none 里程碑引导系统可能对调试启动问题非常有用。none 里程碑没有等效的运行级别。有关更多信息,请参见在 Oracle Solaris 11.2 中管理系统服务
中的如何检查系统引导期间启动服务时出现的问题。
确定系统的当前运行级别
要确定系统的当前运行级别,请使用 who -r 命令。
示例 4-11 确定系统的运行级别
who –r 命令的输出显示有关系统当前运行级别以及之前运行级别的信息。
$ who -r
. run-level 3 Dec 13 10:10 3 0 S
$
| |
run-level 3
| 标识当前的运行级别
|
Dec 13 10:10
| 标识上次更改运行级别的日期
|
3
| 也标识当前的运行级别
|
0
| 标识自上次重新引导以来系统处于该运行级别的次数
|
S
| 标识以前的运行级别
|
|