Linux运行级别(runlevel)是用来表示系统当前工作状态的一组数字标识,它决定了系统启动后哪些服务会被加载、是否开启网络、是否有图形界面等。早期Unix衍生系统就引入了这一概念,Linux沿用了相同的设计,并通过init进程或现代的systemd来管理。

一、传统的七个运行级别
在采用SysVinit作为初始化系统的Linux发行版中,运行级别从0到6一共分为七个,每个级别都有明确用途。这种划分方式简单直观,管理员可以通过修改/etc/inittab文件来设定系统默认级别。
下面列出标准定义:
- 0:关机级别,系统会停止所有服务并断电,绝不能设为默认级别。
- 1:单用户模式,也叫维护模式,仅加载最小系统,不启用网络,用于root密码重置或文件系统修复。
- 2:多用户模式,但默认不启用网络文件系统(NFS),部分发行版中它与级别3无差别。
- 3:完整的多用户文本模式,支持网络与所有标准服务,服务器最常使用的级别。
- 4:保留级别,发行版可自定义,通常未被使用。
- 5:图形界面多用户模式,在级别3基础上启动显示管理器(如GDM、LightDM)。
- 6:重启级别,系统会关闭后重新引导,同样不能设为默认。
使用runlevel命令可以查看当前与上一次的运行级别。例如输出“N 3”表示系统直接以级别3启动,没有之前的级别。切换级别可使用init命令,如init 0关机,init 6重启。
# 查看当前运行级别 runlevel # 切换到单用户模式(需root权限) init 1 # 切换到图形界面 init 5
二、systemd对运行级别的替代
现代主流发行版(如CentOS 7+、Ubuntu 16.04+)使用systemd替代了init,运行级别的概念被“target”单元取代,但为了保持兼容,systemd仍提供了级别映射。理解这种映射关系,才能在老教程与新系统之间无缝操作。
常见的target与级别对应如下:
| 运行级别 | systemd target | 说明 |
|---|---|---|
| 0 | poweroff.target | 关机 |
| 1 | rescue.target | 单用户救援 |
| 3 | multi-user.target | 多用户文本 |
| 5 | graphical.target | 图形界面 |
| 6 | reboot.target | 重启 |
使用systemctl命令可以查看和切换状态。例如systemctl isolate multi-user.target等价于init 3,而systemctl get-default能显示默认启动目标。若要将服务器固定为文本模式,可执行systemctl set-default multi-user.target。
# 查看默认目标 systemctl get-default # 临时切换到多用户文本模式 systemctl isolate multi-user.target # 设置开机默认进入图形界面 systemctl set-default graphical.target
三、运行级别的实际应用与注意事项
在服务器运维中,合理运用运行级别能提升安全性与资源利用率。比如云主机一般设为级别3,避免图形界面占用内存;当系统因驱动问题无法进入图形界面时,可于启动菜单添加systemd.unit=rescue.target参数进入单用户排错。
需要注意的是,直接执行init 0或init 6会立即终止服务,生产环境应先确认无正在运行的任务。另外,在systemd系统中虽可用init命令,但推荐用systemctl以避免兼容层带来的细微差异。错误将默认级别设为0或6会造成系统循环关机或重启,必须通过救援盘修改配置修复。
提示:若使用SSH远程管理,切换至单用户模式(级别1)会断开网络,务必通过控制台操作。
掌握Linux运行级别不仅有助于故障恢复,也是理解系统启动流程的基础。无论是老系统的/etc/rc.d/脚本,还是新系统的target依赖树,核心思想都是按级别加载对应服务集。