GNU/Linux >> Tutoriels Linux >  >> Linux

Comment répertorier les services Systemd sous Linux

Bien que systemd résolve de nombreux problèmes de gestion du système, il est parfois déroutant.

Même une tâche simple comme répertorier les services systemd peut vous faire réfléchir.

Dans cet article, je vais vous montrer comment répertorier les services systemd. J'expliquerai également la sortie afin qu'il vous soit plus facile de comprendre les différents états des services.

Je suppose que vous avez une certaine connaissance de systemd mais même si ce n'est pas le cas, ça devrait aller.

Comment répertorier les services actifs dans systemd

les services systemd sont gérés par le systemctl commande. Si vous exécutez systemctl sans aucun argument, il invoque la valeur par défaut list-units sous-commande et il répertorie différents types d'unités systemd comme les services, les sockets, les cibles, etc.

Mais votre but est de lister les services donc vous spécifiez le type d'unité avec --type signaler comme ceci :

systemctl --type=service

Avez-vous remarqué que je n'ai pas spécifié les list-units sous-commande car c'est la valeur par défaut ? Si vous souhaitez suivre la convention, vous pouvez également le spécifier. Je le préfère ainsi et je suivrai cette convention dans le reste du tutoriel.

systemctl list-units --type=service

Dans les deux cas, la sortie sera la même. Par défaut, cette commande affiche uniquement les services chargés et actifs par ordre alphabétique :

  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

Laissez-moi vous expliquer le résultat :

  • UNIT :nom de l'unité systemd.
  • LOAD  : si le fichier de configuration de l'unité a été analysé par systemd.
  • ACTIVE :état haut niveau de l'unité.
  • SUB :état de niveau bas de l'unité. Une unité active peut être à l'état de fonctionnement ou à l'état de sortie. Cette valeur dépend du type de service.

Comme vous pouvez le voir, vous pouvez répertorier les services chargés sur votre système Linux. Mais un service systemd actif peut être en cours d'exécution ou peut être fermé (après avoir été exécuté avec succès).

Répertorier tous les services systemd en cours d'exécution

L'état actif peut également avoir un sous-état comme en cours d'exécution, quitté, etc. Vous pouvez utiliser le même --state drapeau avec le sous-état.

Pour répertorier les services systemd en cours d'exécution, utilisez le --state=running signaler comme ceci :

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

Voici un exemple de sortie pour mon système montrant certains des services systemd en cours d'exécution :

  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        

Répertorier tous les services systemd chargés, y compris ceux qui sont inactifs

Par défaut, la commande systemctl n'affiche que les unités chargées et actives.

Si vous voulez lister tous les services chargés y compris les inactifs, utilisez le --all drapeau :

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

Vous pouvez désormais voir même les services inactifs :

  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 

Lister tous les services systemd inactifs

Si vous voulez voir uniquement les services inactifs, vous pouvez combiner différents drapeaux comme --all et --state comme ceci :

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

Comme vous pouvez le voir dans la sortie, il affiche tous les services systemd inactifs :

  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                              

Lister tous les services systemd installés (même s'ils ne sont pas chargés)

Chaque unité systemd, qu'il s'agisse d'un service, d'un socket ou de toute autre unité, possède un fichier d'unité qui

systemctl list-unit-files --type=service

Voici ce que vous devriez voir :

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     

Expliquer chaque type d'état sera trop long et n'entre pas dans le cadre de cet article. Peut-être que j'écrirai à ce sujet à l'avenir.

Répertorier tous les services systemd qui seront exécutés automatiquement à chaque démarrage

Pour voir tous les services systemd qui s'exécuteront automatiquement à chaque démarrage de votre système, utilisez cette commande :

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

Êtes-vous confus avec l'état activé ? C'est normal. De nombreux nouveaux utilisateurs confondent un service système activé avec un service en cours d'exécution.

Cependant, un service systemd activé signifie que le service sera activé automatiquement au démarrage du système.

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      

Avez-vous remarqué le préréglage du vendeur ? Il était également présent dans l'exemple précédent.

Le préréglage du fournisseur définit le comportement automatique de l'unité systemd lorsqu'un programme est installé.

Supposons que vous ayez installé un nouveau programme XYZ. Ce XYZ a un service systemd appelé xyz.service avec le préréglage du fournisseur activé. Cela signifie qu'après l'installation du programme, lorsque vous démarrez le système, ce xyz.service sera activé automatiquement au démarrage.

Si le préréglage du fournisseur est désactivé, vous devrez le définir manuellement pour l'activer. Une fois activé, il démarre automatiquement à chaque démarrage.

sudo systemd enable xyz.service

Afficher l'état d'un service systemd particulier

Jusqu'à présent, vous avez vu différentes manières de répertorier les services. Mais rien ne se concentre sur un seul service.

Vous pouvez obtenir des informations détaillées sur un service systemd en utilisant le status sous-commande de systemctl. La complétion par tabulation fonctionne avec cette commande.

systemctl status <service_name>

Voici un exemple avec le service de gestionnaire de réseau :

[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

Vous pouvez voir qu'il fournit de nombreuses informations utiles telles que l'état du service, la page de manuel du service, la mémoire qu'il consomme, l'identifiant du processus, etc. Il affiche également les derniers journaux journalisés du service.

Si vous voulez vérifier si un service est actif ou non dans un script shell, vous pouvez utiliser le is-active sous-commande. La sortie est 0 pour actif.

systemctl is-active application.service

De même, si vous souhaitez vérifier si un service est activé (configuré pour démarrer automatiquement au démarrage), vous pouvez utiliser is-enabled sous-commande. La sortie est 0 pour le service activé.

systemctl is-enabled application.service

Conclusion

Je pense que vous avez maintenant une meilleure compréhension de la liste des services systemd. J'espère que vous avez appris quelques nouvelles choses sur les commandes systemd et systemctl.

N'hésitez pas à nous faire part de vos commentaires, questions ou suggestions dans la section des commentaires.


Linux
  1. Comment gérer les services Systemd avec Systemctl sous Linux

  2. Comment utiliser la commande Systemctl pour gérer les services Systemd

  3. Comment créer un service Systemd sous Linux

  4. Linux - Comment obtenir moins de Ttys avec Systemd ?

  5. Comment empêcher les services Linux de démarrer automatiquement ?

Comment répertorier les services de démarrage au démarrage sous Linux

Comment répertorier les packages installés sous Linux

Comment répertorier les partitions de disque sous Linux

Comment redémarrer les services réseau sous Linux

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment répertorier les services sous Linux