GNU/Linux >> Belajar Linux >  >> Linux

Cara Mendaftar Layanan Systemd di Linux

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.


Linux
  1. Cara Mengelola dan Mendaftar Layanan di Linux

  2. Cara Menggunakan Perintah Systemctl untuk Mengelola Layanan Systemd

  3. Menambahkan layanan baru ke sistem Linuxd

  1. Cara Mengelola Layanan Systemd dengan Systemctl di Linux

  2. Cara membuat layanan Systemd di Linux

  3. Bagaimana menghentikan layanan systemd

  1. Linux – Bagaimana Mendapatkan Lebih Sedikit Ttys Dengan Systemd?

  2. Linux – Bagaimana Systemd Memulai Tanpa Default.target?

  3. Bagaimana cara mencegah layanan Linux mulai otomatis?