Comment répertorier les services Linux avec systemctl

Publié: 2022-10-23
Ordinateur portable Linux affichant une invite bash
fatmawati achmad zaenuri/Shutterstock.com
Pour voir tous les services en cours d'exécution sur un système Linux avec systemd, utilisez la commande "systemctl --type=service --state=running". Cela vous montrera le nom, la charge, le sous-état et la description de chaque service actif. Vous pouvez également modifier la valeur de l'état pour voir les services morts, abandonnés, en échec ou inactifs.

Votre ordinateur Linux repose sur de nombreuses tâches en arrière-plan appelées services ou démons. Sur les distributions basées sur systemd, vous disposez de commandes intégrées qui vous permettent de voir quels services sont en cours d'exécution, désactivés ou en échec.

Services et démons

Les services et les démons sont des tâches d'arrière-plan qui s'exécutent sans interface utilisateur, ne nécessitent pas d'interaction humaine et sont généralement lancées au démarrage de l'ordinateur.

À un moment donné, les services étaient lancés par init , qui était le tout premier processus à être lancé. Les détails des services étaient contenus dans une collection de scripts situés dans le répertoire « /etc/init/d ». Sur les distributions non-systemd, c'est toujours le cas.

Dans le monde systemd, les services sont lancés par systemd qui est désormais le premier processus à être lancé. Les détails des services sont stockés dans des fichiers unitaires situés dans le répertoire « /usr/lib/systemd ».

Selon sa page de manuel, systemd est un gestionnaire de système et de service. Vous pouvez utiliser la commande systemctl pour inspecter et contrôler différents aspects du système systemd, y compris les services et les démons.

Parce que nous examinons ici les commandes spécifiques à systemd, la première chose que vous devez savoir est de savoir si vous exécutez une distribution basée sur systemd ou non.

CONNEXION: Pourquoi le systemd de Linux est toujours source de division après toutes ces années

init ou basé sur systemd ?

La grande majorité des distributions Linux utilisent systemd, y compris Arch, Red Hat et Debian, et de nombreuses distributions qui en sont dérivées. Cela inclut la famille de distributions Ubuntu, Fedora et ses spins, et Manjaro et les autres distributions basées sur Arch.

Cependant, il existe des forks ou des versions de certaines de ces distributions qui ont été créées spécifiquement pour éviter d'avoir à utiliser systemd. Non seulement cela, mais il existe d'autres systèmes d'initialisation que quelqu'un pourrait choisir d'utiliser à la place de celui fourni par défaut dans sa distribution, comme runit ou s6-linux-init.

Comment exécuter un programme Linux au démarrage avec systemd
CONNEXION Comment exécuter un programme Linux au démarrage avec systemd

Si vous devez administrer un ordinateur Linux que vous n'avez pas configuré vous-même, le seul moyen de savoir s'il utilise systemd ou non est de vérifier. Nous pouvons le faire en regardant l'arborescence des processus avec la commande pstree . Nous n'avons besoin de voir que le sommet de l'arborescence - nous recherchons le tout premier processus qui s'exécute, après tout - nous allons donc diriger la sortie via la commande head et demander les cinq premières entrées.

 ptree | tête -5 

Utilisation de pstree via head pour déterminer si une installation Linux utilise systemd

Nous pouvons voir que systemd est le premier processus exécuté après le démarrage, nous sommes donc définitivement sur une installation de Linux basée sur systemd.

CONNEXION: Comment gérer les processus à partir du terminal Linux : 10 commandes que vous devez connaître

Utilisation de systemctl pour répertorier les services

La commande pour répertorier les services et les démons est systemctl . Nous pouvons affiner la commande systemctl avec les options type et state . Nous demandons à systemctl de signaler les services en cours d'exécution.

 systemctl --type=service --state=running 

Utilisation de systemctl pour répertorier les services en cours d'exécution

Un tableau d'informations est généré. S'il est trop large ou trop long pour la fenêtre de votre terminal, il s'affiche dans votre visualiseur de fichiers par défaut, qui sera probablement less .

La sortie d'un appel systemctl affichée dans la visionneuse de fichiers less

Pour voir l'extrémité droite du tableau, appuyez sur la touche Flèche droite. Pour revenir à la vue habituelle, appuyez sur la touche Flèche gauche.

La section de droite de la sortie d'un appel systemctl affichée dans le visualiseur de fichiers less

Appuyez sur la touche Q pour sortir de moins. Les colonnes affichées sont :

  • Unité : Le nom du service ou du démon. La colonne est intitulée "Unité" car tout ce qui se trouve dans cette colonne a été lancé à l'aide d'informations systemd trouvées dans un fichier d'unité.
  • Load : L'état de chargement du service ou du démon. Il peut être chargé, introuvable, mal paramétré, erroné ou masqué.
  • Actif : l'état général dans lequel se trouve le service ou le démon. Il peut être actif, en cours de rechargement, inactif, en échec, en cours d'activation ou en cours de désactivation.
  • SUB : Le sous-état du service ou du démon. Il peut être mort, fermé, en échec, inactif ou en cours d'exécution.
  • Description : Une courte description de l'unité.

Nous pouvons diriger la sortie de systemctl via grep si nous voulons nous concentrer sur un seul service. Cette commande isole l'entrée de table pour le service ssh .

 systemctl --type=service --state=running | grep ssh 

Utilisation de grep pour isoler un seul service des résultats

Jusqu'à présent, nous avons filtré le contenu de la table en fournissant l'option state=running . Nous pouvons utiliser n'importe laquelle des valeurs possibles du sous-état à la place : mort, quitté, échec, inactif ou en cours d'exécution.

Cherchons les services défaillants :

 systemctl --type=service --state=failed 

Rapport sur les services défaillants avec systemctl

Des combinaisons de sous-états peuvent être utilisées. Tapez-les sous forme de liste séparée par des virgules. Assurez-vous de ne pas inclure d'espace entre les options. Notez que cela trouve les services qui correspondent à l'un ou l' autre état.

 systemctl --type=service --state=failed,exit 

Recherche de services qui ont échoué ou quitté avec systemctl

Appuyer sur la touche Flèche droite pour regarder les colonnes hors écran montre que nous avons un mélange de services abandonnés et en échec dans la liste.

Un mélange de services en échec et abandonnés trouvés par systemctl

Par défaut, systemctl répertorie les processus (services et démons) qui ont été lancés par systemd car systemd a trouvé un fichier d'unité contenant un fichier d'unité valide pour eux. C'est pourquoi le terme abrégé pour tous ces processus est "unités".

Il existe une option pour demander explicitement à systemctl de répertorier les unités, mais comme il s'agit de l'action par défaut, elle n'est pas souvent utilisée.

Ces commandes produisent les mêmes résultats.

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

Utilisation de systemctl pour lister les fichiers d'unité

Nous pouvons étendre la portée de la commande systemctl en incluant l'option list-unit-files . Cela ne se contente pas de rapporter les services et les démons qui ont été lancés, il répertorie également tous les fichiers unitaires installés sur votre ordinateur.

 systemctl list-unit-files --state=enabled 

Liste des fichiers d'unité avec systemctl

Un tableau coloré s'affiche.

Une liste de fichiers unitaires générés par systemctl, affichés dans le navigateur de fichiers less

La suppression de l'option state supprime le filtrage. La sortie contiendra tous les fichiers d'unité installés, quel que soit leur état.

 systemctl list-unit-files 

Utilisation de systemctl pour répertorier les fichiers d'unité sans filtrage

La sortie contiendra beaucoup plus d'entrées que les résultats des commandes précédentes.

Tous les fichiers unitaires répertoriés par systemctl et affichés dans le navigateur de fichiers less

Sur notre ordinateur de test, la liste des résultats est presque quatre fois plus longue que la sortie de nos commandes précédentes.

Si vous souhaitez utiliser l'option d' state , vous pouvez utiliser plusieurs états avec celle-ci, comme nous l'avons vu précédemment. Les mêmes règles s'appliquent. Fournissez les options sous forme de valeurs séparées par des virgules et n'incluez aucun espace.

Cette commande répertorie tous les fichiers d'unité qui sont désactivés ou dont le lancement a échoué.

 systemctl list-unit-files --state=enabled,failed 

Utilisation de systemctl pour rechercher des fichiers d'unité correspondant à l'un des deux états

Un nombre réduit de résultats est affiché, filtré selon les sélections que vous avez faites avec l'option d'état.

Un mélange de fichiers d'unité désactivés et en échec trouvés par systemctl

Examiner un service en détail

Si quelque chose à propos d'un service ou d'un démon suscite votre intérêt et mérite une analyse plus approfondie, vous pouvez l'examiner en détail à l'aide de l'option d'état systemctl.

Jetons un coup d'œil au démon SSH, sshd. Tout ce que nous avons à faire est d'utiliser l'option status et le nom du service ou du démon.

 statut systemctl sshd 

Les détails d'un seul service affiché par systemctl

Cet écran compact affiche :

  • Le nom du service accompagné d'une brève description. Un point de couleur indique s'il est en cours d'exécution ou non. Le vert signifie qu'il est en cours d'exécution, le rouge signifie qu'il ne l'est pas.
  • Ce qui a été chargé, y compris le chemin d'accès au fichier d'unité.
  • Depuis combien de temps il tourne.
  • Où se trouve la documentation dans le manuel de l' man .
  • ID de processus de l'instance en cours d'exécution.
  • Combien d'instances simultanées de ce service sont en cours d'exécution. Habituellement, ce sera un.
  • Combien de mémoire est consommée.
  • Combien de temps CPU a été consommé.
  • Le groupe de contrôle auquel appartient le service.

Les entrées pertinentes du journal système sont également affichées. Il s'agit généralement d'événements tels que le démarrage du service. Ceux-ci peuvent être informatifs si vous recherchez un service ou un démon qui ne s'est pas lancé correctement.

CONNEXION: Comment utiliser journalctl pour lire les journaux système Linux

Les systèmes autonomes

Les services et les démons fournissent une grande partie des actions automatiques de votre système d'exploitation, ils sont donc vitaux. Cela signifie que leur santé est également vitale.

Obtenir une vue sur vos services, démons et fichiers d'unité est simple et informatif. C'est également une étape de dépannage précieuse si un service ou un démon refuse de démarrer.

CONNEXION: Comment résoudre l'erreur "Trop de fichiers ouverts" sous Linux