如何删除 systemd 服务

如何删除 systemd 服务

如果我安装了一项新服务,然后决定不再需要该应用程序并将其删除,则该服务仍会列在输出systemctl错误

这是从哪里来的?我该如何彻底清除它们?

答案1

我的服务毁灭秘诀(rm声明时要小心!)

systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] # and symlinks that might be related
rm /usr/lib/systemd/system/[servicename] 
rm /usr/lib/systemd/system/[servicename] # and symlinks that might be related
systemctl daemon-reload
systemctl reset-failed

systemd 服务可能会“包装”/etc/init.d 中的旧式脚本,因此您可能也想清理它,但这是不是systemd 服务所在的位置。

答案2

您可能正在寻找reset-failed

$ sudo systemctl reset-failed
$

来自 systemd 手册页:

reset-failed [PATTERN...]

重置指定单元的“失败”状态,或者,如果未传递单元名称,则重置所有单元的状态。当某个单元以某种方式失败时(即进程以非零错误代码退出、异常终止或超时),它将自动进入“失败”状态,其退出代码和状态将被记录下来,以供管理员检查,直到使用此命令重新启动或重置服务。

答案3

听起来你卸载了它,但没有删除 systemd 钩子:

# systemctl disable [servicename]

答案4

一个简单的 Oneliner 可以是:

service=YOUR_SERVICE_NAME; systemctl stop $service && systemctl disable $service && rm /etc/systemd/system/$service &&  systemctl daemon-reload && systemctl reset-failed

设置service为您想要删除的服务。例如service=gunicorn.service

相关内容