Befehl Systemctl zum Anzeigen einer Zusammenfassung der ausgeführten Dienste

12

Welche systemctlOption oder welchen Befehl würde ich verwenden, um eine Zusammenfassung aller aktuell ausgeführten Dienste anzuzeigen?

user4656368
quelle
Sie sollten die Antwort von @Zanna akzeptieren. Es geht viel mehr um Ihre Frage als meine, auch wenn es auch ein gültiger Ansatz ist.
Videonauth

Antworten:

20

Sie können einige der folgenden systemctlOptionen verwenden:

-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.

Also möchten Sie wahrscheinlich:

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

Hier werden alle aktiven Dienste aufgelistet, einschließlich derjenigen, die beendet wurden. Wenn Sie nur nach denen suchen, die gerade ausgeführt werden, können Sie Folgendes verwenden:

systemctl --type=service --state=running list-units
Zanna
quelle
3
Der systemctlBefehl ohne Unterbefehle geht davon aus list-units, dass ... systemctl --type-service --state=runningoder nur eine Ebene systemctlfür die schnelle Verwendung.
Muru
11

Es ist (siehe man 1 systemctl):

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

oder (siehe auch man 8 service)

service --status-all

Wobei das [+]angibt, welche Dienste tatsächlich ausgeführt werden.

Videonauth
quelle
4

Nachdem ich mich länger als nötig umgesehen hatte, kam ich auf diese etwas andere Methode zur Bestimmung der ausgeführten Dienste. Es wird auch gezeigt, wie die Anzahl der ausgeführten Dienste gezählt wird. Auf diese Weise wird sichergestellt, dass nicht versehentlich etwas mit dem Wort "running" oder "service" im Namen des Dienstes selbst abgefangen wird.

# 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
quelle