如果我安装了一项新服务,然后决定不再需要该应用程序并将其删除,则该服务仍会列在输出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