正确。centos 7已弃用传统runlevel机制,必须通过systemctl set-default target.target(如multi-user.target或graphical.target)永久修改默认启动目标,该命令自动更新default.target符号链接且安全可靠。

CentOS 7 不能直接修改“运行级别”数字(如 runlevel 3 或 5),必须通过设置 systemd 的 target 来实现等效效果。 因为 systemd 已彻底弃用传统 inittab 和 init 数字级机制,/etc/inittab 文件里明确写着 “ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM”,改它完全无效。
systemctl set-default 是唯一推荐的永久生效方式
所有修改默认启动状态的操作,都应使用 systemctl set-default 命令。它会自动更新 /etc/systemd/system/default.target 符号链接,且兼容性、可逆性和幂等性都有保障。
-
systemctl set-default multi-user.target→ 等效于旧版 runlevel 3(纯命令行,带网络) -
systemctl set-default graphical.target→ 等效于旧版 runlevel 5(图形界面) -
systemctl set-default rescue.target→ 等效于 runlevel 1(单用户救援模式) -
systemctl set-default poweroff.target→ 等效于 runlevel 0(关机,不建议设为默认)
执行后无需手动编辑任何文件或创建软链,systemctl 内部已处理全部依赖和验证。重启后即生效。
别用 ln -sf 手动创建 default.target 链接
虽然技术上可行(比如 ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target),但存在几个实际风险:
- 路径写错会导致系统无法正常启动(例如误指向不存在的 target)
- 部分发行版或加固环境禁止直接操作
/etc/systemd/system/下的符号链接 - 不会触发 systemd 的内部校验,可能遗漏依赖服务启用状态
- 与
systemctl get-default输出不一致,造成排查混乱
只要 systemctl set-default 可用,就不要绕过它去碰底层链接。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
临时切换和查看当前状态要用对命令
区分「当前运行状态」和「开机默认目标」很重要,两者命令不同:
- 查当前默认:运行
systemctl get-default(返回如graphical.target) - 查当前实际运行的 target:运行
systemctl list-units --type=target --state=active,或简写runlevel(仍兼容,输出类似N 3) - 临时切换(不改默认):用
systemctl isolate multi-user.target,立即退出 GUI 进入命令行,但重启后恢复原默认
init 3 或 init 5 在 CentOS 7 上仍能工作,但属于兼容层模拟,本质就是调用了 systemctl isolate,不建议在脚本或自动化中依赖。
multi-user.target 和 graphical.target 的关键差异
它们不只是“有没有桌面”的区别,背后服务集合完全不同:
-
multi-user.target不启动display-manager.service(如 gdm、lightdm),也不拉起 X11 相关 socket 和 session manager -
graphical.target显式 Requiresmulti-user.target,再额外启动显示管理器和服务,内存占用高、启动慢 - 若你禁用了
firewalld或NetworkManager,它们在两个 target 中的默认启用状态可能不同,需单独确认
服务器场景下,除非明确需要远程桌面(如 VNC),否则一律用 multi-user.target 更稳妥 —— 少一个 display manager,就少一个潜在攻击面和资源开销。










