我有一个源自 /etc/init.d/XX 脚本的“服务”,并为它生成了一个 systemd包装器。它不会在任何运行级别自动启动,并且当我运行systemctl --all
或systemctl list-unit-files --all
它不会出现在任何列表中时。
我的预感是因为它没有依赖关系,还没有启动,它没有“加载”到 systemd 中(所以没有启用,没有加载)所以 systemd 没有列出它。
有没有办法获得所有可能服务的完整列表,即使是那些尚未启动且未自动启动的服务?或者做一个systemctl search
等效的?
此相关问题仅要求提供将在启动时尝试的服务列表。
“--all”下的man
页面systemctl
说
要列出系统上安装的所有单元,请改用 list-unit-files 命令
但是这些禁用的单位不会出现在list-unit-files
.
好的,我问了“systemd 人”,他们说在旧版本中并没有列出所有这些,尽管手册页这样说:
上面列出的大部分功能似乎并没有真正发生在“我的”systemd 版本
systemd 219
(CentOS 6)上。但它似乎在 Debian 9 上具有 version 的较新版本的 systemctl 中得到修复systemd 232
,也许这就是原因。systemd
如果 init.d 脚本确实指定了运行级别但所有目录中都不存在/etc/rc?.d
(a lachkconfig --del my_service
或其等效项systemctl disable my_service
,或者如果chkconfig
最初从未在其上运行) ,则您仍然可以使用旧版本正常控制它们(状态、启动、停止)然后对于systemd-sysv-generator
旧版本的 systemd,如果您运行等,它不会 [显示在列表中][2],systemctl list-units --all
即使它工作正常并且仍然可控。或者,如果它们是正常服务但被禁用,它们似乎也不会出现在任何列表中,尽管它们仍然可以正常工作。参考: https ://lists.freedesktop.org/archives/systemd-devel/2019-May/042555.html
您是否以 root 身份运行这些命令?我相信 list-unit-files 命令正是您正在寻找的。它列出了单元文件,而不仅仅是加载的服务列表。我认为您可能正在考虑如何配置服务的问题。
也许从创建一个虚拟服务开始并确保它被注册。一些实际上并没有做任何事情的东西。然后,一旦它起作用,您就可以看到它与不起作用的服务有何不同。或者将您的服务单元文件与正在运行的简单服务之一进行比较。
列出系统中正在运行、活动或失败的每个已加载服务:
列出系统中所有禁用的服务:
列出系统中所有启用的服务:
列出系统中所有处于活动状态的已加载服务:
列出系统中每个已加载且处于运行状态的服务:
列出系统中每个已加载的失败状态的服务:
列出系统中每个已加载且处于退出状态的服务: