在日常的系统管理与运维工作中,深入理解运行级别(Run Level)是必备的基础技能之一。简单来说,运行级别定义了操作系统当前所处的具体工作状态,每个状态都对应着一组预设的服务与功能。掌握这8种运行级别后,你就能清楚明白每条命令执行后,系统将会执行哪些操作。
系统运行级别的8种状态
运行级别的本质是一个数字或字母代号,背后关联着一整套预置的系统运行环境。具体说明如下:
0 —— 进入PROM状态(OK状态)。此时系统停留在最底层的固件界面,所有操作系统进程均已停止。
1 —— 管理状态。这是一种特殊的单用户模式,所有文件系统均已挂载,但禁止其他用户登录,管理员可在此模式下进行关键的系统维护或恢复操作。
2 —— 多用户模式。支持多用户同时登录,但未启动网络文件共享服务。
3 —— 多用户模式(标准)。我们最常用的“正常”模式,支持多用户登录,并且网络文件共享服务全部开启。
4 —— 未使用。系统预留的级别,通常不做定义,你可以根据自身需求为其分配特定功能。
5 —— 退出操作系统并关机。
6 —— 重新启动机器。
S, s —— 单用户模式。与级别1略有不同,它是最精简的维护环境,常用于修复文件系统或重置管理员密码。
切换运行级别的命令
清楚了这些状态后,如何进行切换?最直接的命令就是 init。
init 命令用于改变操作系统的当前运行级别。命令格式非常简单:
init [ 0123456Ss ]
例如,执行 init 0 后,系统会输出类似下面的信息:
# init 0
INIT: New run level: 0
The system is coming down. Please wait.
System services are now being stopped.
Print services stopped.
Stopping the syslog service.
syslogd: going down on signal 15
Aug 14 14:54:30 snmpdx: received signal 15
The system is down.
syncing file systems... done
Program terminated
Type help for more information
ok
这段输出清晰地展示了系统如何逐步关闭服务、同步文件系统,并最终进入OK提示符(ok)的完整过程。
当然,在实际的生产环境中,最常用的切换方式还是 shutdown 命令。相比 init,它提供了更人性化的控制选项,例如延迟执行和向用户发送广播消息。
shutdown 命令的通用格式如下:
shutdown [ -y ] [ -g seconds ] [ -i init-state ] [message]
几个关键选项说明:
- -y:当系统询问是否继续时,自动回答“YES”,避免手动确认的步骤。
- -g seconds:指定延迟多少秒后执行关机或重启操作,给你和用户留出缓冲时间。
- -i init-state:你想要切换到的最终运行级别。
- message:一条准备发送给所有登录用户的广播信息,例如“系统将在10分钟后停机维护,请及时保存数据”。
来看一个实际案例:如果你想立即关闭系统,可以使用以下命令:
# shutdown -y -g 0 -i 0
Shutdown started. Mon Dec 15 15:13:57 PST 1997
Broadcast Message from root (console) on mcmurdo Mon Dec 15 15:13:57...
THE SYSTEM IS BEING SHUT DOWN NOW !!!
Log off now or risk your files being damaged
Changing to init state 0 - please wait
ok
这里的 -g 0 表示0秒后执行,即立即关机;-i 0 表示切换到运行级别0(关机)。系统会广播警告信息,并最终进入 ok 状态。
除了 init 和 shutdown 之外,还有一些更快捷、更专用的命令:
- halt —— 直接进入0运行级别,相当于快速关机。
- poweroff —— 在关机基础上,还会尝试向物理电源发出断电信号。如果硬件支持,主机电源会自动关闭。
- reboot —— 最常用的重启命令,等效于
init 6。
这几个命令看似不同,但核心逻辑都围绕着“运行级别”这四个字运转。一旦掌握了运行级别的映射关系,再看这些命令,就会有一种豁然开朗的感觉。
