systemctl 列出所有可能的(包括禁用的)服务

systemctl 列出所有可能的(包括禁用的)服务

我有一个源自 /etc/init.d/XX 脚本的“服务”和一个 systemd包装纸是为其生成的。它不会在任何运行级别自动启动,并且当我运行时systemctl --allsystemctl list-unit-files --all不会显示在任何列表中。

我的预感是,因为它没有依赖项,尚未启动,所以它没有“加载”到 systemd 中(因此未启用,未加载),因此 systemd 不会列出它。

有没有办法获得满的所有可能的服务的列表,甚至那些尚未启动且未自动启动的服务?或者做systemctl search同等的事情?

这相关的问题仅询问将在启动时尝试的服务列表。

man systemctl“--all”下说

要列出系统上安装的所有单元,请使用 list-unit-files 命令

但这些禁用的单位不会出现在 的输出中list-unit-files

答案1

好吧,我问了“systemd 的人”,他们说在旧版本中并没有列出所有这些,尽管手册页是这样说的:

   -a, --all
       When listing units, show all loaded units, regardless of their
       state, including inactive units. When showing unit/job/manager
       properties, show all properties regardless whether they are set or
       not.

       To list all units installed on the system, use the list-unit-files
       command instead.

上面列出的大多数功能似乎并没有在“我的”systemd 版本systemd 219(CentOS 6)中实际实现。但它似乎在 Debian 9 上较新版本的 systemctl 中得到了修复,该版本具有 version systemd 232,也许这就是原因。

systemd如果 init.d 脚本,您仍然可以像旧版本一样控制它们(状态、启动、停止)指定运行级别,但在所有目录中都不存在/etc/rc?.d(lachkconfig --del my_service或其等效项systemctl disable my_service,或者如果chkconfig最初从未在其上运行),那么对于旧版本的 systemd,如果您运行等,systemd-sysv-generator它不会[显示在列表中][2] 。systemctl list-units --all即使它工作正常并且仍然​​可控。或者,如果它们是正常服务但被禁用,它们似乎也不会出现在任何列表中,尽管它们仍然有效。

参考: https://lists.freedesktop.org/archives/systemd-devel/2019-May/042555.html

答案2

列出系统中正在运行、活动或失败的每个已加载的服务:

# sudo systemctl list-units --type=service --all

列出系统中所有禁用的服务:

# sudo systemctl list-unit-files --type=service --state=disabled

列出系统中所有启用的服务:

# sudo systemctl list-unit-files --type=service --state=enabled

列出系统中处于活动状态的每个已加载服务:

# sudo systemctl list-units --type=service --state=active

列出系统中正在运行状态的每个已加载服务: 这是我最喜欢的命令

# sudo systemctl list-units --type=service --state=running

列出系统中每个处于失败状态的已加载服务:

# sudo systemctl list-units --type=service --state=failed

列出系统中处于退出状态的每个已加载服务:

# sudo systemctl list-units --type=service --state=exited

答案3

您是否以 root 身份运行这些命令?我相信 list-unit-files 命令正是您正在寻找的。它列出了单元文件,而不仅仅是加载的服务列表。我认为您可能正在考虑服务配置方式的问题。

也许首先创建一个虚拟服务并确保它已注册。实际上没有任何作用的东西。一旦该服务开始工作,您就可以看到它与不工作的服务有何不同。或者将您的服务单元文件与正在运行的一项简单服务进行比较。

答案4

一个很酷的 TUI,用于systemctl

joehillen/sysz:systemctl 的 fzf 终端 UI

A弗兹夫systemctl 的终端 UI

安装:

wget -O ~/.bin/sysz https://github.com/joehillen/sysz/releases/latest/download/sysz
chmod +x ~/.bin/sysz

用法:sysz <other systemctl args as you wish>

相关内容