禁用linux服务开机自启的核心是systemctl disable 服务名,它删除multi-user.target.wants下的软链接,确保重启后不自动启动;若需彻底禁止(含手动启动),则用systemctl mask 服务名。

禁用 Linux 服务开机自启,核心是操作 systemd 的启用状态,而不是只停止当前运行的服务。只要没禁用,重启后它还会自动起来。
确认服务名并检查当前启用状态
先查清楚你要处理的服务准确名称(通常带 .service 后缀,但命令中可省略):
- 列出所有已安装的服务:
systemctl list-unit-files --type service - 查看某服务是否开机启用:
systemctl is-enabled sshd(返回 enabled 表示会自启) - 查看服务当前运行状态:
systemctl is-active sshd或systemctl status sshd
禁用开机自启(推荐标准方式)
使用 disable 命令移除启动链接,系统重启后该服务不会自动启动:
- 执行:
sudo systemctl disable 服务名(例如sudo systemctl disable chronyd) - 该操作会删除
/etc/systemd/system/multi-user.target.wants/服务名.service的软链接 - 服务仍可手动启动:
sudo systemctl start 服务名
彻底阻止启动(进阶:mask)
如果连手动启动也不允许(比如防止误操作或安全加固),可用 mask:
- 执行:
sudo systemctl mask 服务名 - 这会创建一个指向
/dev/null的同名符号链接,使 systemd 完全忽略该服务 - 要恢复时必须先
sudo systemctl unmask 服务名,再enable或start
注意其他可能的自启路径
有些程序不走 systemd,需额外排查:
-
Docker 容器:检查
docker-compose.yml中是否有restart: always;或用docker update --restart=no 容器名修改 -
用户级桌面自启:查看
~/.config/autostart/下的 .desktop 文件,或 GNOME/KDE 设置中的“开机启动”列表 -
传统脚本:检查
/etc/rc.local(若启用)或/etc/init.d/下的旧式脚本











