Bagaimana cara mencantumkan semua layanan yang diaktifkan dari systemctl?

Bagaimana Saya bisa daftar semua enabled layanan dari systemctl?

Aku tahu berlari systemctl perintah dengan sendirinya daftar semua layanan, tapi saya ingin hanya mendapatkan enabled satu.

systemctl list-unit-files | grep enabled akan mencantumkan semua diaktifkan satu.

Jika Anda ingin yang mana saat ini berlari, Anda membutuhkan systemctl | grep running.

Gunakan yang Anda cari. Diaktifkan, tidak berarti Itu berjalan. Dan menjalankan tidak berarti itu diaktifkan. Mereka adalah dua hal yang berbeda.

Diaktifkan berarti sistem akan menjalankan layanan pada boot berikutnya. Jadi jika Anda mengaktifkan layanan, Anda masih perlu memulainya secara manual, atau reboot dan itu akan mulai.

Menjalankan berarti Itu benar-benar berjalan sekarang, tetapi jika tidak diaktifkan, itu tidak akan restart ketika Anda reboot.

man systemctl negara:

--state=

Argumen harus berupa daftar unit yang dipisahkan koma LOAD, SUB, atau ACTIVE Serikat. Saat mencantumkan unit, Tampilkan hanya unit di status yang ditentukan. Gunakan --state=failed untuk menampilkan unit hanya gagal.

Penjelasan:

LOAD: Mencerminkan apakah definisi unit dimuat dengan benar.
ACTIVE: Status aktivasi unit tingkat tinggi, yaitu generalisasi SUB.
SUB: Tingkat rendah negara aktivasi unit, nilai-nilai tergantung pada jenis unit.

Meskipun Anda juga dapat menggunakan ini untuk hanya menampilkan enabled unit dengan:

systemctl list-unit-files --state=enabled

Jika sebuah unit adalah enabled itu berarti bahwa sistem akan memulainya saat startup. Meskipun pengaturan sesuatu untuk enabled sebenarnya tidak juga start sehingga Anda akan perlu untuk melakukannya secara manual, atau reboot sistem setelah pengaturan ke enabled.

Untuk daftar semua systemd layanan yang berada di state=active dan sub=running

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

Untuk daftar semua systemd serice yang berada di state=active dan sub baik berjalan atau keluar

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

Untuk melihat layanan' diaktifkan ' termasuk ini yang masih dalam upstart/init run:

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

Untuk melihat semua layanan yang sedang berjalan berjalan:

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

Juga ikhtisar semua layanan aktif dan gagal:

systemctl list-units --type service --state running,failed

Ada aplikasi GUI yang bagus bernama Stacer di mana Anda dapat mengelola semua layanan.

enter image description here

Periksa tautan Github-nya Stacer Github
Juga memeriksa Web untuk info lebih lanjut

Selain jawaban saat ini, saya menggunakan yang berikut untuk mendapatkan hanya nama-nama layanan:

systemctl list-units --type=service --state=active,running | awk '/.*\.service/ {print $1}'

Daripada format tabel, ini membuatnya lebih mudah untuk menyalurkan hanya layanan tersebut ke program lain

@ Gen mengaktifkan layanan sangat berbeda dari memulainya. Lihat ‘man systemctl’.

Menarik. Jawaban dengan nilai terendah adalah jawaban yang paling “benar”, meskipun jelas bukan jawaban terbaik. Pertanyaan yang sangat bagus ini (dan jawabannya) adalah contoh menarik tentang bagaimana systemd melanggar prinsip desain Unix & Co yang sudah lama ada (dan brilian). @ FelipeAlvarez mengeluh bahwa jawaban yang paling diterima mengasumsikan systemd mengikuti filosofi desain unix, tetapi systemd/systemctl dapat melakukan apa yang dia inginkan (sebagian besar pengguna berpengalaman hanya akan menganggap bahwa mengasapi lengkap). Saya mulai melihat lebih jelas mengapa Linus Torvalds sangat kritis terhadap systemd.

apa yang dimaksud dengan enabled? Maksudmu layanan yang sedang berjalan?