Polecenie Systemctl, aby wyświetlić podsumowanie uruchomionych usług

12

Jakiej systemctlopcji lub polecenia użyłbym, aby wyświetlić podsumowanie wszystkich aktualnie uruchomionych usług?

użytkownik4656368
źródło
Powinieneś zaakceptować odpowiedź @Zanna. znacznie bardziej odpowiada na twoje pytanie, podobnie jak moje, nawet jeśli jest to również prawidłowe podejście.
Videonauth,

Odpowiedzi:

20

Możesz użyć niektórych systemctlopcji:

-t, --type=
       The argument should be a comma-separated list of unit types such as
       service and socket.

       If one of the arguments is a unit type, when listing units, limit
       display to certain unit types. Otherwise, units of all types will
       be shown.

       As a special case, if one of the arguments is help, a list of
       allowed values will be printed and the program will exit.

   --state=
       The argument should be a comma-separated list of unit LOAD, SUB, or
       ACTIVE states. When listing units, show only those in the specified
       states. Use --state=failed to show only failed units.

       As a special case, if one of the arguments is help, a list of
       allowed values will be printed and the program will exit.

Więc prawdopodobnie chcesz:

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

Która zawiera listę wszystkich aktywnych usług, w tym tych, które zostały zakończone. Jeśli szukasz tylko tych, które działają w tym momencie, możesz użyć:

systemctl --type=service --state=running list-units
Zanna
źródło
3
systemctlPolecenia bez podpoleceń zakłada list-units, tak ... systemctl --type-service --state=running, czy tylko zwykły systemctldo szybkiego użycia.
mur
11

To jest (patrz man 1 systemctl):

systemctl list-units | grep -E 'service.*running'

lub (patrz także man 8 service)

service --status-all

Gdzie [+]wskazuje usługi, które faktycznie działają.

Videonauth
źródło
4

Po dłuższym rozglądaniu się wymyśliłem tę nieco inną metodę określania uruchomionych usług. Pokazuje także, jak policzyć liczbę uruchomionych usług. W ten sposób zapewnia, że ​​przypadkowo nie wyłapie czegoś z uruchomionym słowem lub usługą w samej nazwie usług.

# Output all active services:
systemctl -t service --state=active --no-pager --no-legend

# Count of all active services:
systemctl -t service --state=active --no-pager --no-legend | grep -c -

# Output all running services:
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running'

# Count of all running services:
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running' -c -

# Output only the service and its description:
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running' | awk 'BEGIN { FS = " ";} {for (i = 2; i <= 4; i++) { $i = "" }; print}'
Sysinfo.io
źródło