显示所有已启用但未运行的 systemd 服务

显示所有已启用但未运行的 systemd 服务

如何显示所有已启用但未运行的 systemd 服务?

据我所知,“不运行”可能发生在两种情况下:

  1. 服务崩溃了
  2. 服务已停止。

就我目前的情况而言,服务是否崩溃或明确停止并不重要。

答案1

我认为您正在寻找这个命令:

systemctl list-units [-all] [--state=xxx]

我认为这两个命令显示了您想要看到的内容:

systemctl list-units -all --state=inactive
systemctl list-units -all --state=failed

更详细的解释,可以参考这个答案:

https://superuser.com/questions/896812/all-systemd-states

祝你今天过得愉快。

答案2

(我猜楼主很久以前就一直在做他想做的事情,但对于其他正在寻找这个的人来说)

MathieuR 的回答为我指明了正确的方向,但我发现最好的方法(至少对我来说)是

systemctl list-units -all | grep -Ev 'loaded  +active'

即列出除包含 loaded 且后跟至少两个空格然后是 active 的行之外的所有单位。

答案3

我发现现有的答案很有趣,但不知何故,我不是机器,不想搜索数百行输出并让我的眼睛流血。

来自 Gentoo/open-rc,我真的很想念rc-statusCentos 8 上的命令。
所以我做了一个单行命令,你只需要在你的~/.bashrc.

for i in $(cd /etc/systemd/system/multi-user.target.wants && ls *.service); do script -q -c "systemctl status -n 0 --no-pager $i" |head -n 1; script -q -c "systemctl status -n 0 --no-pager $i" |grep --color=never "Active: "; done;

这会显示所有已启用的服务并在下一行打印其状态。
如果您使用彩色终端,您将很容易发现未启用的服务。

相关内容