systemctl 可以列出所有启用的服务,包括旧服务吗?

systemctl 可以列出所有启用的服务,包括旧服务吗?

这个问题问:“如何列出 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

我的测试列出了所有服务,甚至包括来自旧启动服务的服务。

来源:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-services

答案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

相关链接

相关内容