如何显示所有已启用但未运行的 systemd 服务?
据我所知,“不运行”可能发生在两种情况下:
- 服务崩溃了
- 服务已停止。
就我目前的情况而言,服务是否崩溃或明确停止并不重要。
答案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-status
Centos 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;
这会显示所有已启用的服务并在下一行打印其状态。
如果您使用彩色终端,您将很容易发现未启用的服务。