Meskipun systemd memecahkan banyak masalah dengan manajemen sistem, terkadang juga membingungkan.
Bahkan tugas sederhana seperti mendaftar layanan systemd dapat membuat Anda berpikir.
Pada artikel ini, saya akan menunjukkan cara membuat daftar layanan systemd. Saya juga akan menjelaskan hasilnya sehingga lebih mudah bagi Anda untuk memahami berbagai status layanan.
Saya kira Anda memiliki beberapa pengetahuan tentang systemd tetapi bahkan jika Anda tidak, itu akan baik-baik saja.
Cara membuat daftar layanan aktif di systemd
layanan systemd dikelola oleh systemctl
memerintah. Jika Anda menjalankan systemctl
tanpa argumen apa pun, ia memanggil list-units
default sub-perintah dan mencantumkan berbagai jenis unit systemd seperti layanan, soket, target, dll.
Tetapi tujuan Anda adalah untuk membuat daftar layanan sehingga Anda menentukan jenis unit dengan --type
tandai seperti ini:
systemctl --type=service
Apakah Anda memperhatikan bahwa saya tidak menentukan list-units
sub-perintah karena itu adalah default? Jika Anda ingin mengikuti konvensi, Anda dapat menentukannya juga. Saya lebih suka cara ini dan saya akan mengikuti konvensi ini di sisa tutorial.
systemctl list-units --type=service
Dalam kedua kasus, outputnya akan sama. Secara default, perintah ini hanya menampilkan layanan yang dimuat dan aktif dalam urutan abjad:
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
acpid.service loaded active running ACPI event daemon
alsa-restore.service loaded active exited Save/Restore Sound Card State
apparmor.service loaded active exited Load AppArmor profiles
apport.service loaded active exited LSB: automatic crash report generation
Mari saya jelaskan hasilnya:
UNIT
:nama unit systemd.LOAD
: apakah file konfigurasi unit telah diuraikan oleh systemd.ACTIVE
:status unit tingkat tinggi.SUB
:status unit tingkat rendah. Unit yang aktif dapat berada dalam status berjalan atau status keluar. Nilai ini tergantung pada jenis layanan.
Seperti yang Anda lihat, Anda dapat membuat daftar layanan yang dimuat di sistem Linux Anda. Tetapi layanan systemd yang aktif dapat berjalan atau dapat ditutup (setelah berhasil dijalankan).
Mendaftar semua layanan systemd yang berjalan
Status aktif juga dapat memiliki sub-status seperti berjalan, keluar, dll. Anda dapat menggunakan --state
yang sama bendera dengan sub-negara bagian.
Untuk membuat daftar layanan systemd yang berjalan, gunakan --state=running
tandai seperti ini:
systemctl list-units --type=service --state=running
Berikut adalah contoh keluaran untuk sistem saya yang menunjukkan beberapa layanan systemd yang sedang berjalan:
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
acpid.service loaded active running ACPI event daemon
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
bluetooth.service loaded active running Bluetooth service
bolt.service loaded active running Thunderbolt system service
Daftar semua layanan systemd yang dimuat termasuk yang tidak aktif
Secara default, perintah systemctl hanya menampilkan unit yang dimuat dan aktif.
Jika Anda ingin membuat daftar semua layanan yang dimuat termasuk yang tidak aktif, gunakan --all
bendera:
systemctl list-units --all --type=service
Anda sekarang dapat melihat bahkan layanan yang tidak aktif:
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
acpid.service loaded active running ACPI event daemon
alsa-restore.service loaded active exited Save/Restore Sound Card State
alsa-state.service loaded inactive dead Manage Sound Card State (restore and store)
anacron.service loaded inactive dead Run anacron jobs
apparmor.service loaded active exited Load AppArmor profiles
Mencantumkan semua layanan systemd yang tidak aktif
Jika Anda hanya ingin melihat layanan yang tidak aktif, Anda dapat menggabungkan berbagai tanda seperti --all
dan --state
seperti ini:
systemctl list-units --all --type=service --state=inactive
Seperti yang Anda lihat di output, ini menampilkan semua layanan systemd yang tidak aktif:
UNIT LOAD ACTIVE SUB DESCRIPTION
alsa-state.service loaded inactive dead Manage Sound Card State (restore and store)
anacron.service loaded inactive dead Run anacron jobs
apport-autoreport.service loaded inactive dead Process error reports when automatic reporting is enabled
apt-daily-upgrade.service loaded inactive dead Daily apt upgrade and clean activities
apt-daily.service loaded inactive dead Daily apt download activities
● auditd.service not-found inactive dead auditd.service
Mencantumkan semua layanan systemd yang diinstal (meskipun tidak dimuat)
Setiap unit sistem, baik itu layanan atau soket atau unit lainnya, memiliki file unit yang
systemctl list-unit-files --type=service
Inilah yang harus Anda lihat:
UNIT FILE STATE VENDOR PRESET
accounts-daemon.service enabled enabled
acpid.service disabled enabled
alsa-restore.service static enabled
alsa-state.service static enabled
alsa-utils.service masked enabled
anacron.service enabled enabled
apparmor.service enabled enabled
apport-autoreport.service static enabled
[email protected] static enabled
Menjelaskan setiap jenis negara akan terlalu panjang dan tidak dalam cakupan artikel ini. Mungkin saya akan menulisnya di masa depan.
Buat daftar semua layanan systemd yang akan dijalankan pada setiap boot secara otomatis
Untuk melihat semua layanan systemd yang akan berjalan secara otomatis setiap kali sistem Anda boot, gunakan perintah ini:
systemctl list-unit-files --type=service --state=enabled
Apakah Anda bingung dengan status yang diaktifkan? Itu normal. Banyak pengguna baru mengacaukan layanan sistem yang diaktifkan dengan layanan yang sedang berjalan.
Namun, layanan systemd yang diaktifkan berarti layanan tersebut akan diaktifkan secara otomatis saat sistem melakukan booting.
UNIT FILE STATE VENDOR PRESET
accounts-daemon.service enabled enabled
anacron.service enabled enabled
apparmor.service enabled enabled
[email protected] enabled enabled
avahi-daemon.service enabled enabled
binfmt-support.service enabled enabled
bluetooth.service enabled enabled
console-setup.service enabled enabled
containerd.service enabled enabled
cron.service enabled enabled
cups-browsed.service enabled enabled
cups.service enabled enabled
dbus-fi.w1.wpa_supplicant1.service enabled enabled
Apakah Anda memperhatikan Preset Vendor? Itu juga ada di contoh sebelumnya.
Preset vendor menentukan perilaku otomatis unit systemd saat program diinstal.
Misalkan Anda menginstal program baru XYZ. XYZ ini memiliki layanan systemd yang disebut xyz.service dengan preset vendor diaktifkan. Artinya, setelah menginstal program, saat Anda mem-boot sistem, xyz.service ini akan diaktifkan secara otomatis pada saat boot.
Jika preset vendor dinonaktifkan, Anda harus mengaturnya secara manual untuk mengaktifkan. Setelah diaktifkan, itu dimulai secara otomatis setiap boot.
sudo systemd enable xyz.service
Menampilkan status layanan systemd tertentu
Sejauh ini, Anda telah melihat berbagai cara daftar layanan. Tapi tidak ada yang berfokus pada satu layanan.
Anda bisa mendapatkan informasi rinci tentang layanan systemd menggunakan status
sub-perintah systemctl. Penyelesaian tab berfungsi dengan perintah ini.
systemctl status <service_name>
Berikut ini contoh dengan layanan pengelola jaringan:
[email protected]:~$ systemctl status NetworkManager.service
● NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-07-23 08:12:44 IST; 3h 8min ago
Docs: man:NetworkManager(8)
Main PID: 711 (NetworkManager)
Tasks: 3 (limit: 9157)
Memory: 13.6M
CGroup: /system.slice/NetworkManager.service
└─711 /usr/sbin/NetworkManager --no-daemon
Jul 23 08:12:50 itsfoss NetworkManager[711]: <info> [1595472170.7159] device (wlp58s0): Activation: successful, device activated.
Jul 23 08:12:50 itsfoss NetworkManager[711]: <info> [1595472170.7179] manager: startup complete
Jul 23 08:12:51 itsfoss NetworkManager[711]: <info> [1595472171.5592] manager: NetworkManager state is now CONNECTED_GLOBAL
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info> [1595472172.7973] dhcp6 (wlp58s0): activation: beginning transaction (timeout in 45 seconds)
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info> [1595472172.8017] policy: set 'JioFi3_215810' (wlp58s0) as default for IPv6 routing and DNS
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info> [1595472172.8058] dhcp6 (wlp58s0): option dhcp6_name_servers => 'fe80::a8dc:79ff:fe1b:57fe'
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info> [1595472172.8059] dhcp6 (wlp58s0): state changed unknown -> bound
Jul 23 08:12:59 itsfoss NetworkManager[711]: <info> [1595472179.9251] agent-manager: agent[bdd71d4a66098713,:1.84/org.gnome.Shell.NetworkAgent/1>
Jul 23 11:18:10 itsfoss NetworkManager[711]: <info> [1595483290.7874] manager: NetworkManager state is now CONNECTED_SITE
Jul 23 11:18:11 itsfoss NetworkManager[711]: <info> [1595483291.5893] manager: NetworkManager state is now CONNECTED_GLOBAL
Anda dapat melihatnya menyediakan banyak informasi berguna seperti status layanan, halaman manual layanan, memori yang digunakan, id proses, dll. Ini juga menunjukkan beberapa log jurnal terakhir untuk layanan.
Jika Anda ingin memeriksa apakah suatu layanan aktif atau tidak dalam skrip shell, Anda dapat menggunakan is-active
sub-perintah. Outputnya adalah 0 untuk aktif.
systemctl is-active application.service
Demikian pula, jika Anda ingin memeriksa apakah suatu layanan diaktifkan (diatur untuk memulai secara otomatis saat boot), Anda dapat menggunakan is-enabled
sub-perintah. Outputnya adalah 0 untuk layanan yang diaktifkan.
systemctl is-enabled application.service
Kesimpulan
Saya pikir Anda sekarang memiliki pemahaman yang lebih baik tentang daftar layanan systemd. Saya harap Anda mempelajari beberapa hal baru tentang perintah systemd dan systemctl.
Jangan ragu untuk memberikan tanggapan, pertanyaan, atau saran Anda di bagian komentar.