如何从 systemd/systemctl 中完全删除不存在的服务?

如何从 systemd/systemctl 中完全删除不存在的服务?

没有文件,没有符号链接,服务不存在。systemctl 单元未列出,单元文件未列出。

systemctl daemon-reload
systemctl reset-failed
systemctl reboot
0 loaded units listed.

日志录入周期:

Scheduled restart job, restart counter is at 2.
Failed to locate executable
Failed at step EXEC spawning
Main process exited, code=exited, status=203/EXEC
Failed with result 'exit-code'.

它存储在哪里,如何删除它?

“准确地告诉你在问什么” - 它已被禁用、停止和删除,但有人试图启动它。

答案1

由于没有持久的单元缓存可以在重启后保留状态,因此 .service 单元要想尝试执行某项操作,唯一的办法就是确保该单元存在在当前启动过程中,同样,它的原始启动作业也必须在当前启动期间发出。

systemctl show -p FragmentPath将显示单元加载的文件的位置。可能有以下几种情况:

  • 它作为常规文件存在于 /etc/systemd/system 或 (/usr)/lib/systemd/system 中。

  • 它之前存在于 /etc/systemd/system 或 (/usr)/lib/systemd/system在当前启动过程中(在发出启动请求时),但已被删除 - 例如,当服务单元仍在运行时,该包已被卸载。

  • 它存在于 /run/systemd/system 中,作为在系统启动期间动态创建单元的其他服务的输出。

  • 它存在于 /run/systemd/generator 中,作为 systemd “单元生成器”的输出,该生成器在每次启动和守护进程重新加载期间运行。例如,SysV /etc/init.d 脚本由生成器自动包装在 systemd 单元中。

  • 它是通过 D-Bus 调用创建的“临时单元”,例如systemd-run

相关内容