GNU/Linux >> Znalost Linux >  >> Linux

Jak vypsat Systemd Services v Linuxu

I když systemd řeší mnoho problémů se správou systému, někdy je to také matoucí.

Dokonce i jednoduchý úkol, jako je seznam služeb systemd, vás může přimět k zamyšlení.

V tomto článku vám ukážu, jak vypsat seznam služeb systemd. Vysvětlím také výstup, abyste snáze porozuměli různým stavům služeb.

Předpokládám, že máte nějaké znalosti o systemd, ale i když ne, mělo by to být v pořádku.

Jak vypsat seznam aktivních služeb v systemd

služby systemd jsou spravovány systemctl příkaz. Pokud spustíte systemctl bez jakýchkoli argumentů, vyvolá výchozí list-units sub-command a uvádí různé typy systemd jednotek, jako jsou služby, zásuvky, cíle atd.

Ale vaším cílem je vypsat seznam služeb, abyste specifikovali typ jednotky pomocí --type příznak takto:

systemctl --type=service

Všimli jste si, že jsem nespecifikoval list-units dílčí příkaz, protože je výchozí? Pokud se chcete řídit konvencí, můžete to také určit. Dávám přednost tomuto způsobu a ve zbytku tutoriálu se budu řídit touto konvencí.

systemctl list-units --type=service

V obou případech bude výstup stejný. Ve výchozím nastavení tento příkaz zobrazuje pouze načtené a aktivní služby v abecedním pořadí:

  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

Dovolte mi vysvětlit výstup:

  • UNIT :název systémové jednotky.
  • LOAD : zda byl konfigurační soubor jednotky analyzován systémem systemd.
  • ACTIVE :vysoký stav jednotky.
  • SUB :nízký stav jednotky. Aktivní jednotka může být v běžícím nebo opuštěném stavu. Tato hodnota závisí na typu služby.

Jak vidíte, můžete uvést seznam načtených služeb ve vašem systému Linux. Aktivní služba systemd však může být spuštěna nebo může být ukončena (po úspěšném spuštění).

Seznam všech spuštěných systemd služeb

Aktivní stav může mít také dílčí stav, jako je spuštěno, ukončeno atd. Můžete použít stejný --state vlajka s podstátem.

Chcete-li zobrazit seznam spuštěných služeb systemd, použijte --state=running příznak takto:

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

Zde je ukázkový výstup pro můj systém zobrazující některé ze spuštěných služeb systemd:

  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        

Vypsat všechny načtené systémové služby včetně neaktivních

Ve výchozím nastavení příkaz systemctl zobrazuje pouze načtené a aktivní jednotky.

Pokud chcete vypsat všechny načtené služby včetně neaktivních, použijte --all příznak:

systemctl list-units --all --type=service

Nyní můžete vidět i neaktivní služby:

  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 

Vypsat všechny neaktivní služby systemd

Pokud chcete vidět pouze neaktivní služby, můžete kombinovat různé příznaky jako --all a --state takhle:

systemctl list-units --all --type=service --state=inactive

Jak můžete vidět na výstupu, zobrazuje všechny neaktivní služby systemd:

  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                              

Vypsat všechny nainstalované systémové služby (i když nejsou načteny)

Každá jednotka systemd, ať už je to služba nebo zásuvka nebo jakákoli jiná jednotka, má soubor jednotky, který

systemctl list-unit-files --type=service

Zde je to, co byste měli vidět:

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     

Vysvětlování jednotlivých typů stavu bude příliš zdlouhavé a nespadá do rozsahu tohoto článku. Možná o tom v budoucnu napíšu.

Vypsat všechny systémové služby, které budou automaticky spuštěny při každém spuštění

Chcete-li zobrazit všechny služby systemd, které se automaticky spustí při každém spuštění systému, použijte tento příkaz:

systemctl list-unit-files --type=service --state=enabled

Jste zmateni stavem povoleno? To je normální. Mnoho nových uživatelů si plete povolenou systémovou službu s běžící službou.

Povolená služba systemd však znamená, že služba bude aktivována automaticky při spuštění systému.

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      

Všimli jste si předvolby dodavatele? Byl také přítomen v předchozím příkladu.

Předvolba dodavatele definuje automatické chování systémové jednotky při instalaci programu.

Předpokládejme, že jste nainstalovali nový program XYZ. Tento XYZ má službu systemd s názvem xyz.service s povolenou předvolbou dodavatele. To znamená, že po instalaci programu, když nabootujete systém, se tato xyz.service automaticky aktivuje při bootování.

Pokud je předvolba dodavatele zakázána, budete ji muset aktivovat ručně. Jakmile je povoleno, spustí se automaticky při každém spuštění.

sudo systemd enable xyz.service

Zobrazení stavu konkrétní systémové služby

Dosud jste viděli různé způsoby výpisu služeb. Nic se ale nezaměřuje na jedinou službu.

Podrobné informace o službě systemd můžete získat pomocí status dílčí příkaz systemctl. Pomocí tohoto příkazu funguje dokončování karet.

systemctl status <service_name>

Zde je příklad se službou správce sítě:

[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

Můžete vidět, že poskytuje spoustu užitečných informací, jako je stav služby, manuálová stránka služby, paměť, kterou spotřebovává, id procesu atd. Také zobrazuje několik posledních žurnálovaných protokolů pro službu.

Pokud chcete v shell skriptu zkontrolovat, zda je služba aktivní nebo ne, můžete použít is-active dílčí příkaz. Výstup je 0 pro aktivní.

systemctl is-active application.service

Podobně, pokud chcete zkontrolovat, zda je služba povolena (nastaveno na automatické spouštění při spouštění), můžete použít is-enabled dílčí příkaz. Výstup je 0 pro povolenou službu.

systemctl is-enabled application.service

Závěr

Myslím, že nyní lépe rozumíte výpisu systemd služeb. Doufám, že jste se dozvěděli pár nových věcí o příkazech systemd a systemctl.

Neváhejte a poskytněte svůj názor, dotazy nebo návrhy v sekci komentářů.


Linux
  1. Jak spravovat a vypisovat služby v Linuxu

  2. Jak používat příkaz Systemctl ke správě služeb Systemd

  3. Přidání nové služby do Linux systemd

  1. Jak spravovat služby Systemd pomocí Systemctl v systému Linux

  2. Jak vytvořit službu Systemd v Linuxu

  3. Jak zabráním automatickému spouštění služeb Linuxu?

  1. Linux – jak získat méně Ttys s Systemd?

  2. Linux – Jak začít Systemd bez Default.target?

  3. Jak zastavit službu systemd