Linux 运行级别
一、传统SysV Init运行级别(如CentOS 6、Debian 7)
运行级别定义
级别 | 作用 | 典型场景 |
---|---|---|
0 | 关机(Halt) | init 0 直接关闭系统 |
1 | 单用户模式(Single User Mode) | 系统维护、修复(无网络、无服务) |
2 | 多用户模式无网络(部分系统等同于3) | 极少使用 |
3 | 多用户模式文本界面(带网络) | 服务器默认模式 |
4 | 未分配(用户自定义) | 特定用途需手动配置 |
5 | 多用户模式图形界面(GUI) | 桌面系统默认模式 |
6 | 重启(Reboot) | init 6 重启系统 |
常用命令
-
查看当前运行级别
<BASH>
runlevel # 输出结果如:N 3(N表示前一个级别) who -r # 显示运行级别及启动时间
-
切换运行级别
<BASH>
init 3 # 切换到运行级别3(文本模式) telinit 5 # 同init 5(切换到图形界面)
-
设置默认运行级别
修改/etc/inittab
:<BASH>
id:5:initdefault: # 默认运行级别5(需重启生效)
二、Systemd运行目标(Runlevel兼容)
现代系统(如CentOS 7+、Ubuntu 16.04+)使用 target
替代运行级别,但保持运行级别概念的兼容性:
运行级别对应关系
运行级别 | Systemd Target | 描述 |
---|---|---|
0 | poweroff.target | 关机 |
1 | rescue.target | 单用户模式 |
3 | multi-user.target | 多用户文本模式(服务器默认) |
5 | graphical.target | 图形界面(桌面默认) |
6 | reboot.target | 重启 |
常用命令(Systemd)
-
查看默认目标和当前目标
<BASH>
systemctl get-default # 显示默认目标(如 graphical.target) systemctl list-units --type target --state active # 查看所有活动目标
-
切换目标
<BASH>
systemctl isolate multi-user.target # 切换到运行级别3(文本模式) systemctl isolate graphical.target # 切换到运行级别5(图形界面)
-
设置默认目标
<BASH>
systemctl set-default multi-user.target # 设置为文本模式(重启后生效)
三、场景示例
1. 进入单用户模式(重置Root密码)
- 传统方式:启动时在GRUB界面添加
1
或single
参数。 - Systemd方式:启动时添加
systemd.unit=rescue.target
内核参数。
2. 服务器默认启动到文本模式
- Systemd:
<BASH>
systemctl set-default multi-user.target
3. 临时进入图形界面(从级别3到5)
- Systemd:
<BASH>
startx # 直接启动图形界面(需安装Xorg) 或 systemctl start display-manager # 启动显示管理器(如GDM、LightDM)
四、注意事项
-
新旧系统差异:
- 避免在Systemd系统中直接使用
init 3
,优先使用systemctl
命令。 - Systemd的
target
支持更复杂的依赖关系(如网络服务在图形界面启动前自动运行)。
- 避免在Systemd系统中直接使用
-
关键操作保护:
- 单用户模式(1或rescue.target)绕过大部分权限检查,需物理访问权限。
- 修改默认运行级别后务必测试重启流程。