GNU/Linux >> Linux Esercitazione >  >> Linux

Come elencare i servizi Systemd in Linux

Sebbene systemd risolva molti problemi con la gestione del sistema, a volte crea anche confusione.

Anche un semplice compito come elencare i servizi di sistema potrebbe farti pensare.

In questo articolo, ti mostrerò come elencare i servizi systemd. Spiegherò anche l'output in modo che sia più facile comprendere i diversi stati dei servizi.

Presumo che tu abbia una certa conoscenza di systemd ma anche se non lo fai, dovrebbe andare bene.

Come elencare i servizi attivi in ​​systemd

i servizi systemd sono gestiti da systemctl comando. Se esegui systemctl senza alcun argomento, invoca il valore predefinito list-units sottocomando ed elenca vari tipi di unità di sistema come servizi, socket, destinazioni ecc.

Ma il tuo scopo è elencare i servizi in modo da specificare il tipo di unità con --type segnala in questo modo:

systemctl --type=service

Hai notato che non ho specificato le list-units sottocomando perché è l'impostazione predefinita? Se vuoi seguire la convenzione, puoi specificare anche quello. Preferisco così e seguirò questa convenzione nel resto del tutorial.

systemctl list-units --type=service

In entrambi i casi l'output sarà lo stesso. Per impostazione predefinita, questo comando mostra solo i servizi caricati e attivi in ordine alfabetico:

  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

Lascia che ti spieghi l'output:

  • UNIT :nome dell'unità systemd.
  • LOAD : se il file di configurazione dell'unità è stato analizzato da systemd.
  • ACTIVE :stato di alto livello dell'unità.
  • SUB :stato di basso livello dell'unità. Un'unità attiva può essere in stato di funzionamento o uscita. Questo valore dipende dal tipo di servizio.

Come puoi vedere, puoi elencare i servizi caricati sul tuo sistema Linux. Ma un servizio systemd attivo potrebbe essere in esecuzione o potrebbe essere chiuso (dopo essere stato eseguito correttamente).

Elenca tutti i servizi systemd in esecuzione

Lo stato attivo può anche avere uno stato secondario come running, exited ecc. Puoi usare lo stesso --state bandiera con il sottostato.

Per elencare i servizi systemd in esecuzione, usa --state=running segnala in questo modo:

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

Ecco un esempio di output per il mio sistema che mostra alcuni dei servizi systemd in esecuzione:

  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        

Elenca tutti i servizi systemd caricati inclusi quelli inattivi

Per impostazione predefinita, il comando systemctl mostra solo le unità caricate e attive.

Se vuoi elencare tutti i servizi caricati compresi quelli inattivi, usa il --all bandiera:

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

Ora puoi vedere anche i servizi inattivi:

  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 

Elenca tutti i servizi systemd inattivi

Se vuoi vedere solo i servizi inattivi, puoi combinare vari flag come --all e --state così:

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

Come puoi vedere nell'output, mostra tutti i servizi di sistema inattivi:

  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                              

Elenca tutti i servizi systemd installati (anche se non sono stati caricati)

Ogni unità systemd, sia essa di servizio o socket o qualsiasi altra unità, ha un file di unità che

systemctl list-unit-files --type=service

Ecco cosa dovresti vedere:

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     

Spiegare ogni tipo di stato sarà troppo lungo e non rientra nell'ambito di questo articolo. Forse ne scriverò in futuro.

Elenca tutti i servizi systemd che verranno eseguiti automaticamente ad ogni avvio

Per vedere tutti i servizi di systemd che verranno eseguiti automaticamente ogni volta che il tuo sistema si avvia, usa questo comando:

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

Sei confuso con lo stato abilitato? È normale. Molti nuovi utenti confondono un servizio di sistema abilitato con un servizio in esecuzione.

Tuttavia, un servizio systemd abilitato significa che il servizio verrà attivato automaticamente all'avvio del sistema.

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      

Noti il ​​Vendor Preset? Era presente anche nell'esempio precedente.

Il preset del fornitore definisce il comportamento automatico dell'unità systemd quando viene installato un programma.

Supponiamo di aver installato un nuovo programma XYZ. Questo XYZ ha un servizio systemd chiamato xyz.service con la preimpostazione del fornitore abilitata. Ciò significa che dopo l'installazione del programma, all'avvio del sistema, questo xyz.service verrà attivato automaticamente all'avvio.

Se la preimpostazione del fornitore è disabilitata, dovrai impostarla manualmente per attivarla. Una volta abilitato, si avvia automaticamente ad ogni avvio.

sudo systemd enable xyz.service

Visualizza lo stato di un particolare servizio systemd

Finora, hai visto vari modi per elencare i servizi. Ma niente si concentra su un unico servizio.

Puoi ottenere informazioni dettagliate su un servizio systemd utilizzando lo status sottocomando di systemctl. Il completamento delle schede funziona con questo comando.

systemctl status <service_name>

Ecco un esempio con il servizio di gestione della rete:

[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

Puoi vedere che fornisce molte informazioni utili come lo stato del servizio, la pagina man del servizio, la memoria che consuma, l'id del processo ecc. Mostra anche gli ultimi registri journald per il servizio.

Se vuoi controllare se un servizio è attivo o meno in uno script di shell, puoi usare is-active sottocomando. L'uscita è 0 per attivo.

systemctl is-active application.service

Allo stesso modo, se vuoi verificare se un servizio è abilitato (impostato per l'avvio automatico all'avvio), puoi utilizzare is-enabled sottocomando. L'output è 0 per il servizio abilitato.

systemctl is-enabled application.service

Conclusione

Penso che ora tu abbia una migliore comprensione dell'elenco dei servizi di systemd. Spero che tu abbia imparato alcune cose nuove sul comando systemd e systemctl.

Non esitare a fornire feedback, domande o suggerimenti nella sezione commenti.


Linux
  1. Come gestire ed elencare i servizi in Linux

  2. Come gestire i servizi Systemd con Systemctl su Linux

  3. Aggiunta di un nuovo servizio a Linux systemd

  4. Linux:come ottenere meno Tty con Systemd?

  5. Come interrompere il servizio systemd

Come elencare i servizi di avvio all'avvio in Linux

Come elencare i pacchetti installati in Linux

Come elencare le partizioni del disco in Linux

Come riavviare i servizi di rete in Linux

Come eseguire lo script della shell come servizio SystemD in Linux

Come elencare i servizi su Linux