这个问题问:“如何列出 systemctl 中所有启用的服务?”该页面上的答案包括:
systemctl list-unit-files | grep enabled
systemctl list-unit-files --state=enabled
至少从 systemd 版本 229(在 Ubuntu 16.04 上)开始,systemctl list-unit-files
将不包括通过旧版初始化脚本启动的“LSB”服务。
因此,最初的问题似乎仍然没有答案:systemd 能否显示它将在启动时尝试启动的所有服务(和其他单元类型)的列表,包括遗留服务?
考虑:
$ systemctl list-units | grep LSB | grep grub
grub-common.service loaded active exited LSB: Record successful boot for GRUB
$ systemctl list-unit-files | grep enabled | grep grub || echo 'nothing found'
nothing found
$ systemctl is-enabled grub-common
grub-common.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install is-enabled grub-common
enabled
systemctl
了解grub-common
,如果您明确询问,systemctl
则会告诉您它已启用。
那么...有没有办法让 systemd 显示它将在启动时尝试运行的所有服务的列表,包括遗留脚本?
答案1
我相信你想要的命令是:
systemctl list-units --type service --all
我的测试列出了所有服务,甚至包括来自旧启动服务的服务。
来源:
答案2
我相信你想要的是
systemctl list-unit-files --type service --state enabled
用于list-unit-files
列出已安装的单元文件(不仅仅是当前内存中的文件)。手册页中的一些相关部分:
list-units [PATTERN...] List units currently in memory
list-unit-files [PATTERN...] List installed unit files
is-enabled UNIT... Check whether unit files are enabled
-t --type=TYPE List units of a particular type
--state=STATE List units with particular LOAD or SUB or ACTIVE state
-a --all Show all properties/all units currently in memory,
including dead/empty ones. To list all units installed
on the system, use 'list-unit-files' instead.
在旧版本的 systemd 上这不是真的:
在真正旧的 systemd 版本中,“systemctl list-unit-files”仅显示本机单元文件。在较新的版本中,我们还显示生成的单元文件,以使它们更容易被发现。
我用 测试了每个生成的服务is-enabled
。有些返回enabled
,有些返回disabled
,有些返回第三种状态“ generated
”(都是)。我不确定这些。
systemctl is-enabled $(systemctl list-unit-files --type service --state generated | awk '/.*\.service/ {print $1}' | tr '\n' ' ') |& grep "^\w*$" | sort | uniq -c | sort -rn