首页/系统/Linux 运维命令速查/systemctl get-default 查默认目标
systemd 与服务42 条

systemctl get-default 查默认目标

确认系统默认启动到哪个 target(文本/图形),安装桌面组件或云镜像切换后常需核对。

Linux 运维命令速查系统更新于 2026-10-13

命令是干什么的

systemctl get-default 读出系统的默认启动目标(target),也就是开机不加特殊内核参数时 systemd 最终进入哪个 target。返回值实质是 /etc/systemd/system/default.target 这个软链接指向的单元名,作用等价于老体系的默认 runlevel。它只在 systemd 接管 PID 1 的发行版上有效(RHEL/CentOS 7 起、Ubuntu 16.04 起、Debian 9 起、SLES 12 起、openSUSE 12.3 起);SysV init 或无 systemd 的容器里这条命令没有意义。

基本信息

适用平台所有由 systemd 引导的 Linux 发行版
查询语法systemctl get-default
修改语法systemctl set-default <target>(永久);systemctl isolate <target>(只对本次运行生效)
读取对象/etc/systemd/system/default.target 符号链接,指向 /usr/lib/systemd/system/ 下的目标单元
权限要求查询不需要权限;set-default 与 isolate 需要 root
相关命令systemctl list-units --type=target、systemctl list-dependencies <target>

典型使用场景

  • 装机或换镜像后核对默认进命令行还是图形界面,避免服务器白跑一套桌面组件
  • 服务器瘦身:内存被桌面环境吃掉时,先确认是不是被切到了 graphical.target
  • 云镜像与主机模板标准化:把默认目标写进云初始化脚本或配置管理,批量交付才一致
  • 排查登录异常:判断系统是停在 rescue/emergency 目标,还是网络与认证出了问题
  • 临时维护需要图形工具时用 isolate 切过去,重启后仍然回到命令行,不留后患

常用示例

常用示例
systemctl get-default                      # 查当前默认目标,常见返回 multi-user.target
systemctl set-default multi-user.target    # 永久切到命令行模式(内部维护 default.target 软链接)
systemctl get-default                      # 复核返回值确实变了
systemctl isolate multi-user.target        # 本次运行立即切换,停掉不在依赖链上的图形服务
readlink -f /etc/systemd/system/default.target   # 等价查看软链接指向的真实单元文件
systemctl list-units --type=target --all   # 列出全部 target 及加载/激活状态
ls -l /etc/systemd/system/default.target   # 确认指向的单元文件确实存在,没有断链

target 与旧 runlevel 对照

默认目标单元含义旧 runlevel
multi-user.target多用户命令行模式,基础服务全开但没有图形登录3
graphical.target在 multi-user 基础上再拉起图形登录管理器5
rescue.target单用户救援:挂载本地文件系统、只起基础服务1
emergency.target最小紧急 shell,根文件系统默认只读,需手动改挂载无对应
reboot.target / poweroff.target重启 / 关机这两个动作的目标6 / 0

返回值的读法

返回值的读法
# 正常输出就一个单元名:multi-user.target
# 报 System has not been booted with systemd as init system (PID 1). Can't operate.
# 说明当前环境不是 systemd 引导(容器、chroot、init=/bin/bash),该值无参考价值
ps -p 1 -o comm=      # 先确认 PID 1 是不是 systemd
systemctl get-default # 是 systemd 再看默认目标才有意义
set-default 只改指向,不会改变当前正在运行的状态;要让改动立即生效必须用 isolate,而 isolate 会停掉不在目标依赖链上的服务,远程执行前想清楚会中断什么。
rescue 与 emergency 目标常用于改密码、修根文件系统。emergency 下根分区通常是只读挂载,改文件前要先 mount -o remount,rw /,否则会误判成磁盘写保护。
容器、chroot 与 systemd-nspawn 里这条命令可能直接报错:默认目标由容器运行时决定,改宿主的 default.target 对容器内进程无效。

易错点

  • 用 rm 加 ln 手工重建 default.target,容易留下断链或与 /usr/lib/systemd/system/ 里的同名单元混淆,开机直接掉进 emergency;改默认目标一律用 systemctl set-default
  • 把默认目标改成 graphical.target 后显示管理器启动失败,图形登录界面反复重启,远程只剩 SSH 可用;先 isolate 回 multi-user.target 再查日志
  • 云厂商初始化脚本、配置管理或镜像模板会按自己的清单重置默认目标,改完不写进自动化配置就会过一段时间又变回去
  • 切换默认目标属于可能失联的操作:远程执行前确认至少还有一条带外管理或备用 SSH 通道,改完立刻用 systemctl get-default 复核

数据来源与参考

  • man 1 systemctl(get-default)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌