Jak wyświetlić listę wszystkich włączonych usług z systemctl?

279

Jak mogę wyświetlić listę wszystkich enabledusług systemctl?

Wiem, że uruchomienie systemctlsamego polecenia wyświetla listę wszystkich usług, ale chciałbym uzyskać tylko enabledte.

oceanBT
źródło
co masz na myśli przez włączone? Masz na myśli działające usługi?
Gen
7
@Gen włączenie usługi różni się znacznie od jej uruchomienia. Zobaczyć man systemctl.
Jos
Fascynujący. Najniższa ocena jest odpowiedzią najbardziej „poprawną”, mimo że zdecydowanie nie jest najlepszą odpowiedzią. To doskonałe pytanie (i odpowiedzi) jest interesującym przykładem tego, w jaki sposób systemd narusza od dawna (i genialne) zasady projektowania Unix & Co. / systemctl może robić dokładnie to, co chce (najbardziej doświadczeni użytkownicy uznają to za kompletne wzdęcie). Zaczynam rozumieć, dlaczego Linus Torvalds jest tak gwałtownie krytyczny wobec systemd.
BISI

Odpowiedzi:

411

systemctl list-unit-files | grep enabledwyświetli listę wszystkich włączonych .

Jeśli chcesz, które są aktualnie uruchomione , potrzebujesz systemctl | grep running.

Użyj tego, którego szukasz. Włączone, nie oznacza, że ​​działa. A bieganie nie oznacza, że ​​jest włączone. To są dwie różne rzeczy.

Włączone oznacza, że ​​system uruchomi usługę przy następnym uruchomieniu. Jeśli więc włączysz usługę, nadal musisz ją ręcznie uruchomić lub uruchomić ponownie, a ona się uruchomi.

Uruchomienie oznacza, że ​​aktualnie działa, ale jeśli nie jest włączone, nie uruchomi się ponownie po ponownym uruchomieniu.

dorycki
źródło
5
denerwujące, że trzeba użyć zewnętrznego narzędzia (grep), aby pokazać te ważne informacje. Ale dziękuję za wskazanie nam drogi :)
Felipe Alvarez
34
@FelipeAlvarez Correct. Ale tak działa Linux. Wiele małych plików binarnych, które dobrze ze sobą współpracują. systemctl robi to, o co prosi, wyświetla listę usług. Nie ma wbudowanej komendy filtrującej do systemctl, ponieważ grep już istnieje i może to zrobić dobrze z wyjściem dowolnego programu. Tak było zawsze :)
Dorian
3
Zgadzam się i tak powinno być. Ale systemd już próbuje zrobić tak dużo, że zastanawiam się, dlaczego nie może wyświetlić listy włączonych usług?
Felipe Alvarez
5
systemctl | grep runningnic mi nie wymieniaj! Nawet jeśli coś działa, jest wymienione tylko dla jego statusu, na przykład:enabled, disabled, masked, static
Cirelli94,
27
Prostsze:systemctl list-unit-files --state=running
będzie
93

man systemctl stwierdza:

--state=

Argument powinien być lista oddzielonych przecinkami jednostkowych LOAD, SUBlub ACTIVEpaństw. Podczas wyświetlania jednostek wyświetlaj tylko te w określonych stanach. Służy --state=faileddo wyświetlania tylko uszkodzonych jednostek.

Wyjaśnienie:

LOAD: Odzwierciedla, czy definicja jednostki została poprawnie załadowana.
ACTIVE: Stan aktywacji jednostki wysokiego poziomu, tj. Uogólnienie SUB.
SUB: Stan aktywacji niskiego poziomu, wartości zależą od typu jednostki.

Możesz tego także użyć do wyświetlania enabledjednostek tylko z:

systemctl list-unit-files --state=enabled

Jeśli jest to jednostka enabled, oznacza to, że system uruchomi ją podczas uruchamiania. Chociaż ustawienie czegoś enabledtak naprawdę nie oznacza starttego, więc będziesz musiał to zrobić ręcznie lub zrestartować system po ustawieniu tego na enabled.

Martin Thornton
źródło
5
Aby włączyć i rozpocząć w tym samym czasie:systemctl enable --now ...
Aurélien Ooms
1
--state=enablednie ma wpływu na systemową wersję 215 (na Raspbian 8 Jessie), ale działa na systemowej wersji 229 (na Ubuntu 16.04.03 Xenial).
mpb
@mpb: Ale działa idealnie doskonale w wersji 235 na Arch Linux.
64

Aby wyświetlić listę wszystkich systemdusług, które są w state=activeisub=running

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

Aby wyświetlić listę wszystkich usług, systemdktóre są włączone state=activei podrzędne, są uruchomione lub zakończone

systemctl list-units --type=service --state=active
Ankit Kumar Honey
źródło
12

Aby zobaczyć usługi „włączone”, w tym te, które są nadal w trakcie uruchamiania / uruchamiania:

systemctl list-unit-files --type service --state enabled,generated

Aby wyświetlić wszystkie aktualnie uruchomione usługi:

systemctl list-units --type service --state running
nix-power
źródło
Niestety nazwy usług mogą być różne w obu listach - np sshdvs. sshi syslogkontra rsyslog.
OrangeDog
Jedyna poprawna odpowiedź „non grep”. Chociaż nie jestem pewien, dlaczego wspomniano o upstart ...
rogerdpack
2

Przegląd wszystkich aktywnych i nieudanych usług:

systemctl list-units --type service --state running,failed
panticz.de
źródło