Как я могу показать все службы systemd, которые включены, но не работают?
AFAIK «не работает» может произойти в двух случаях:
В моем текущем случае не имеет значения, произошел ли сбой служб или он был явно остановлен.
Думаю, вы ищете эту команду:
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
Хорошего дня.
(Я предполагаю, что операционист уже давно делал то, что хотел, но для других, ищущих это)
Ответ MathieuR указал мне в правильном направлении, но я нашел лучший способ (по крайней мере для меня) быть
systemctl list-units -all | grep -Ev 'loaded +active'
то есть перечислить все единицы, кроме тех, у которых строки содержат загруженные, за которыми следуют как минимум два пробела, а затем активны.
Я нашел существующие ответы интересными, но почему-то я не машина и не хочу искать сотни строк вывода и заставлять глаза кровоточить.
Исходя из 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;
Это покажет все включенные службы и напечатает их статус в следующей строке.
Если вы используете цветной терминал, вы легко обнаружите неактивные.