应使用 systemctl set-default multi-user.target 设置默认目标,因其兼容所有 systemd 发行版;/etc/inittab 已被 systemd 忽略;需验证 get-default 输出、修复权限、解掩码并禁用显示管理器,GRUB 参数仅作临时应急。

直接改默认 target 就行,multi-user.target 是最稳妥、最通用的做法,适用于所有用 systemd 的现代发行版(Ubuntu 16.04+、CentOS 7+、统信UOS、麒麟、Debian 8+ 等)。
为什么不用改 /etc/inittab?
因为 inittab 是 SysVinit 时代的配置文件,systemd 完全不读它。你在 CentOS 7 或 Ubuntu 20.04 里编辑 /etc/inittab,系统会直接忽略——连警告都不会报。很多教程还沿用这个写法,纯属过时信息。
-
systemd用default.target软链接替代运行级别概念 -
multi-user.target≈ 传统 runlevel 3(纯命令行) -
graphical.target≈ 传统 runlevel 5(带图形界面)
执行 systemctl set-default multi-user.target 后要验证
命令执行完不等于生效,必须确认输出确实是 multi-user.target:
sudo systemctl set-default multi-user.target sudo systemctl get-default
如果返回 graphical.target,说明没写成功——常见原因是权限不足或路径被只读挂载。别跳过这步,否则重启后还是进桌面。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 某些统信UOS或麒麟镜像会把
/usr/lib/systemd/system/multi-user.target权限设错,需先修复:sudo chmod 644 /usr/lib/systemd/system/multi-user.target - 若提示
Failed to set default target: Unit graphical.target is masked,说明显示管理器服务被强制禁用过,得先解掩码:sudo systemctl unmask graphical.target
光设 default.target 不够,还得停掉显示管理器
multi-user.target 只是“默认不拉起图形”,但如果你之前启用过 lightdm 或 gdm3,它们可能仍会在后台尝试自启,导致启动卡在黑屏或反复闪退。必须显式禁用:
- 查当前用的显示管理器:
loginctl show-session $(loginctl | grep session | head -n1 | awk '{print $1}') -p Type | cut -d= -f2 - 停并禁用(以
lightdm为例):sudo systemctl stop lightdm && sudo systemctl disable lightdm - 如果是统信UOS,大概率是
dde-dm;麒麟可能是ukui-lightdm,名字得看实际输出
漏掉这步,你可能发现:重启后确实没进桌面,但 ps aux | grep xorg 仍能看到 Xorg 进程在跑,内存照样被吃掉。
GRUB 参数只是临时/兜底方案,别当主力用
systemd.unit=multi-user.target 加在 GRUB 命令行里,只对单次启动有效;加进 /etc/default/grub 并 update-grub 后虽能持久,但它绕过了 systemd 的依赖管理逻辑——比如某些网络服务可能因 target 切换顺序异常而延迟就绪。
- 适合紧急维护:GRUB 编辑时加参数,进命令行救系统
- 不适合长期使用:和
systemctl set-default冲突时,GRUB 参数优先级更高,容易掩盖配置错误 - Debian 系用户注意:
GRUB_CMDLINE_LINUX="text"在部分内核版本下不生效,必须用systemd.unit=multi-user.target
真正省下的内存,不在“进不进桌面”那一秒,而在 Xorg 和桌面框架进程是否彻底不加载——这取决于 systemctl disable 是否干净执行,而不是 GRUB 行参有没有多打一个空格。

















