linux中切换运行目标分临时和永久两种:用systemctl isolate可即时切换当前目标(如multi-user.target),重启后恢复;用systemctl set-default可设开机默认目标,通过创建符号链接实现。

Linux 中通过 systemctl 切换运行目标,核心是使用 isolate 命令临时切换,或用 set-default 永久修改开机默认目标。现代 systemd 系统(如 CentOS 7+、Ubuntu 16.04+)已不再使用传统 runlevel 数字,而是用 .target 单元表示运行状态。
临时切换当前运行目标
执行 systemctl isolate 可立即终止不相关服务、启动新目标所需服务,不重启系统,适合维护或调试:
- 切换到纯命令行多用户模式:sudo systemctl isolate multi-user.target
- 切换到图形界面模式:sudo systemctl isolate graphical.target
- 进入单用户救援模式:sudo systemctl isolate rescue.target
- 进入紧急模式(最小环境,仅 root shell):sudo systemctl isolate emergency.target
注意:该操作即时生效,但重启后恢复原默认目标。
设置开机默认运行目标
使用 set-default 修改系统下次启动时自动加载的目标,影响长期行为:
- 设为开机进命令行:sudo systemctl set-default multi-user.target
- 设为开机进图形界面:sudo systemctl set-default graphical.target
- 查看当前默认目标:systemctl get-default
该命令会在 /etc/systemd/system/default.target 创建指向对应 .target 文件的符号链接。
验证与排查常见问题
切换后建议确认实际状态和依赖是否正常:
- 查当前激活的目标:systemctl list-units --type=target --state=active
- 看图形目标依赖哪些服务:systemctl list-dependencies graphical.target
- 若 isolate 失败,检查失败单元:systemctl --failed
- 确保目标文件存在,例如:ls /usr/lib/systemd/system/multi-user.target
不复杂但容易忽略











