Perintah Systemctl untuk menampilkan ringkasan layanan yang berjalan

12

Yang systemctlpilihan atau perintah akan saya gunakan untuk menampilkan ringkasan dari semua layanan yang sedang berjalan?

pengguna4656368
sumber
Anda harus menerima jawaban @Zanna. itu jauh lebih menjawab pertanyaan Anda seperti saya, bahkan jika itu pendekatan yang valid juga.
Videonauth

Jawaban:

20

Anda dapat menggunakan beberapa systemctlopsi:

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

Jadi mungkin Anda ingin:

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

Yang mencantumkan semua layanan aktif termasuk yang telah keluar. Jika Anda hanya mengejar yang berjalan saat ini, Anda dapat menggunakan:

systemctl --type=service --state=running list-units
Zanna
sumber
3
The systemctlperintah tanpa subcommands mengasumsikan list-units, jadi ... systemctl --type-service --state=running, atau hanya polos systemctluntuk digunakan cepat.
muru
11

Itu adalah (lihat man 1 systemctl):

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

atau (lihat juga man 8 service)

service --status-all

Di mana [+]menunjukkan layanan yang benar-benar berjalan.

Videonauth
sumber
4

Setelah mencari-cari lebih lama dari yang diperlukan, saya menemukan metode penentuan layanan yang berjalan sedikit berbeda. Ini juga menunjukkan bagaimana cara menghitung jumlah layanan yang berjalan. Cara ini memastikan bahwa itu tidak sengaja menangkap sesuatu dengan kata menjalankan atau layanan dalam nama layanan itu sendiri.

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