直接运行 systemctl is-enabled 服务名.service 可准确查询开机自启状态,服务名必须带 .service 后缀;返回 enabled 表示已设为开机自启,disabled 表示手动关闭,static 表示依赖触发,masked 表示被硬屏蔽;systemctl status 中的 enabled 仅为快照信息,不可靠;用户级服务需加 --user 参数。

直接运行 systemctl is-enabled 服务名.service 就能一键查清。
命令写法要准确
服务名必须带 .service 后缀,比如:
systemctl is-enabled nginx.servicesystemctl is-enabled sshd.servicesystemctl is-enabled docker.service
不加后缀可能误匹配其他单元类型(如 timer 或 socket),或返回“not found”错误。
返回值含义明确
结果只有四种,直接对应配置状态:
- enabled:已明确设为开机自启(这是你要找的确认信号)
- disabled:手动关闭过,不会开机启动
- static:本身不能独立启用,靠其他服务触发(如 systemd-journald)
- masked:被硬屏蔽(符号链接指向 /dev/null),完全禁止启动
别被 status 输出误导
systemctl status xxx 里 “Loaded” 行末尾写的 enabled,只是快照信息,可能滞后或受 vendor preset 影响。真正生效的、脚本可依赖的,只有 is-enabled 的输出。
用户级服务要加 --user
如果是桌面环境下的个人服务(如 gnome-keyring、pipewire-pulse),得用:
systemctl --user is-enabled pipewire-pulse.service
系统级命令查不到这类服务。

















