直接用 systemctl disable 命令可禁止 systemd 服务开机自启,它移除 multi-user.target.wants 下的软链接,不影响当前运行状态;需配合 is-enabled 验证、stop 停止当前实例,或 mask 彻底屏蔽。

直接用 systemctl disable 命令即可禁止 systemd 服务开机自动运行。它会移除启动时加载该服务所需的软链接,但不影响服务当前是否正在运行。
确认服务当前自启状态
先查清服务是否已启用自启:
-
systemctl is-enabled 服务名 —— 返回
enabled表示已设开机自启;disabled表示未启用;static或masked则需另作判断 - 也可用 systemctl list-unit-files --type=service | grep 服务名 查看全局注册状态
执行禁用操作
以 root 权限运行禁用命令:
-
sudo systemctl disable 服务名(后缀
.service可省略) - 成功后,系统会删除
/etc/systemd/system/multi-user.target.wants/服务名.service这个软链接 - 注意:禁用后服务仍可能在当前会话中运行,如需立即停止,额外执行 sudo systemctl stop 服务名
验证是否禁用成功
禁用不是一劳永逸,建议验证结果:
- 再次运行 systemctl is-enabled 服务名,应返回
disabled - 检查目标目录:ls /etc/systemd/system/multi-user.target.wants/ | grep 服务名,输出为空即表示软链接已清除
- 重启系统或模拟启动流程(如 systemctl daemon-reload && systemctl start multi-user.target)可进一步确认行为
其他禁用方式(按需选用)
某些场景下,disable 不够彻底,可考虑更强控制:
-
sudo systemctl mask 服务名:创建指向
/dev/null的硬链接,彻底屏蔽服务——连手动start都会被拒绝 -
sudo systemctl unmask 服务名:恢复被屏蔽的服务,再配合
disable使用更稳妥 - 不推荐直接删
.service文件或修改WantedBy=字段,易引发配置混乱或升级覆盖











