在大多数 Linux 发行版中,传统上存在 8 个运行级别(runlevel),这些运行级别决定了系统启动后的运行状态。以下是常见运行级别列表:
- 0: 停机(关机状态)
- 1: 单用户模式(维护模式)
- 2: 基本多用户模式(无网络支持)
- 3: 完全多用户模式(命令行界面)
- 5: 带图形界面的多用户模式
- 6: 重启
- S, s: 单用户模式
以往,这些运行级别定义都存储在 /etc/inittab 文件中。然而,现在如果你查看该文件,可能会发现一个有趣的提示——
[root@wode003 ~]# cat /etc/inittab
输出显示:
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HA VE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
没错,从 systemd 时代开始,/etc/inittab 就已经名存实亡。systemd 使用 "target"(目标单元)来替代传统的 runlevel,这种方式更灵活且更统一。两个最常用的 target 分别是:multi-user.target(对应传统 runlevel 3)和 graphical.target(对应传统 runlevel 5)。
如何查看当前的默认 target?只需执行命令:
systemctl get-default
例如在测试机上运行,返回 graphical.target,表明系统启动时默认进入图形界面。
若想将默认 target 切换为命令行模式,可使用 systemctl set-default 命令:
[root@wode003 ~]# systemctl set-default multi-user.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
执行后再次验证设置结果:
[root@wode003 ~]# systemctl get-default
multi-user.target
是的,切换成功。需要注意的是,systemd 通过软链接来管理默认 target,因此操作过程中会显示删除旧链接、创建新链接的步骤。
总而言之,理解 runlevel 的发展历史有助于排查系统启动问题,但在实际运维中直接使用 systemd target 命令更高效可靠。
