Comment vérifier si un service système est masqué sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à vérifier si un service système est masqué sous Linux en utilisant systemd. Masquer un service empêche son démarrage, ce qui est un concept clé pour la gestion et la résolution de problèmes du système. Vous utiliserez la commande systemctl is-masked pour vérifier l'état de masquage de services spécifiques et la commande systemctl list-unit-files pour obtenir une vue d'ensemble plus large des fichiers d'unités systemd. Enfin, vous explorerez les répertoires de configuration de systemd pour comprendre où ces paramètres sont stockés.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/ls -.-> lab-558770{{"Comment vérifier si un service système est masqué sous Linux"}} linux/less -.-> lab-558770{{"Comment vérifier si un service système est masqué sous Linux"}} linux/cd -.-> lab-558770{{"Comment vérifier si un service système est masqué sous Linux"}} linux/service -.-> lab-558770{{"Comment vérifier si un service système est masqué sous Linux"}} end

Vérifier le masquage d'un service avec systemctl is-masked

Dans cette étape, nous allons commencer à explorer systemd, le gestionnaire de systèmes et de services dans les distributions Linux modernes telles qu'Ubuntu. systemd est responsable du démarrage, de l'arrêt et de la gestion des services (comme les serveurs web, les bases de données, etc.) et d'autres ressources système.

Un concept important dans systemd est le "masquage" d'un service. Masquer un service empêche son démarrage, même manuellement ou par d'autres services. C'est un moyen de désactiver complètement un service.

Nous pouvons vérifier si un service est masqué en utilisant la commande systemctl is-masked. Vérifions l'état d'un service courant, apache2. Apache est un serveur web populaire.

Ouvrez votre terminal s'il n'est pas déjà ouvert. N'oubliez pas que vous pouvez trouver l'icône Xfce Terminal sur le côté gauche de votre bureau.

Tapez la commande suivante et appuyez sur Entrée :

systemctl is-masked apache2

Vous devriez voir une sortie similaire à celle-ci :

inactive

Cette sortie indique que le service apache2 n'est pas masqué. S'il était masqué, la sortie serait masked.

Essayons de vérifier un service qui est généralement masqué par défaut dans cet environnement, comme systemd-udevd-kernel.socket. Il s'agit d'un service système de bas niveau.

Tapez la commande suivante et appuyez sur Entrée :

systemctl is-masked systemd-udevd-kernel.socket

La sortie devrait être :

masked

Cela confirme que le service systemd-udevd-kernel.socket est bien masqué.

Comprendre si un service est masqué est crucial pour la résolution de problèmes et la gestion de votre système. Si un service ne démarre pas, vérifier son état de masquage est souvent l'une des premières étapes.

Cliquez sur Continuer pour passer à l'étape suivante.

Lister les fichiers d'unités avec systemctl list-unit-files

Dans l'étape précédente, nous avons utilisé systemctl is-masked pour vérifier l'état de services individuels. Maintenant, obtenons une vue plus large de tous les fichiers d'unités connus par systemd.

systemd gère différents types d'"unités", qui sont des fichiers de configuration définissant des services, des points de montage, des périphériques, des sockets, etc. Le type le plus courant est l'unité .service, qui définit comment exécuter un processus en arrière-plan (un service).

La commande systemctl list-unit-files affiche une liste de tous les fichiers d'unités installés et leur état d'"activation". L'état d'activation indique si une unité est configurée pour démarrer automatiquement au démarrage du système.

Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

systemctl list-unit-files

Cette commande affichera une longue liste de fichiers d'unités. La sortie ressemblera à ceci (seule une petite partie est affichée) :

UNIT FILE                                  STATE
proc-sys-fs-binfmt_misc.automount          static
dev-hugepages.mount                        static
dev-mqueue.mount                           static
proc-sys-fs-binfmt_misc.mount              static
sys-fs-fuse-connections.mount              static
sys-kernel-config.mount                    static
sys-kernel-debug.mount                     static
sys-kernel-tracing.mount                   static
...
apache2.service                            disabled
...

La sortie comporte deux colonnes :

  • UNIT FILE : Le nom du fichier d'unité (par exemple, apache2.service).
  • STATE : L'état d'activation de l'unité (par exemple, static, enabled, disabled, masked).

Voici une brève explication de certains états courants :

  • enabled : L'unité est configurée pour démarrer automatiquement au démarrage.
  • disabled : L'unité n'est pas configurée pour démarrer automatiquement au démarrage.
  • static : L'unité ne peut pas être activée ou désactivée ; son démarrage est contrôlé par une autre unité.
  • masked : L'unité est complètement désactivée et ne peut pas être démarrée.

Vous pouvez parcourir la sortie en utilisant la barre de défilement de votre terminal ou en redirigeant la sortie vers un visualiseur comme less. Par exemple :

systemctl list-unit-files | less

Dans less, vous pouvez utiliser les touches fléchées pour défiler, appuyer sur la barre d'espace pour descendre d'une page et appuyer sur q pour quitter.

Cette commande est très utile pour voir quels services sont installés sur votre système et comment ils sont configurés pour démarrer.

Cliquez sur Continuer pour passer à l'étape suivante.

Inspecter la configuration de systemd dans /etc/systemd

Dans les étapes précédentes, nous avons utilisé la commande systemctl pour interagir avec systemd. Maintenant, regardons où systemd stocke ses fichiers de configuration.

Le répertoire principal pour les fichiers de configuration de systemd est /etc/systemd. Ce répertoire contient des sous-répertoires pour différents types de fichiers d'unités et de paramètres de configuration.

Listons le contenu du répertoire /etc/systemd en utilisant la commande ls. Rappelez-vous, /etc est un répertoire standard dans Linux pour les fichiers de configuration.

Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

ls /etc/systemd/

Vous verrez une liste de répertoires et de fichiers, similaire à ceci :

journald.conf  logind.conf  networkd.conf  resolved.conf  system  system.conf  timesyncd.conf  user  user.conf

Le sous-répertoire le plus important ici est /etc/systemd/system. C'est là que les fichiers d'unités système sont souvent placés ou liés. Regardons à l'intérieur de ce répertoire.

Changez votre répertoire actuel pour /etc/systemd/system en utilisant la commande cd.

cd /etc/systemd/system

Maintenant, listez le contenu de ce répertoire :

ls

Vous verrez une liste de fichiers et de répertoires, dont beaucoup sont des liens symboliques (->) pointant vers les fichiers d'unités réels situés ailleurs (souvent dans /lib/systemd/system). C'est ainsi que les services sont activés ou désactivés – en créant ou en supprimant ces liens symboliques.

Par exemple, vous pourriez voir quelque chose comme :

multi-user.target.wants -> /lib/systemd/system/multi-user.target.wants
sockets.target.wants -> /lib/systemd/system/sockets.target.wants
...

Les répertoires .wants contiennent des liens symboliques vers les services qui doivent être démarrés lorsque cette cible (target) est atteinte. Par exemple, multi-user.target.wants contient des liens vers les services qui doivent s'exécuter lorsque le système est en mode multi-utilisateur (comme après le démarrage).

Regardons à l'intérieur du répertoire multi-user.target.wants.

ls multi-user.target.wants/

Vous verrez une liste de services qui sont activés pour démarrer dans la cible multi-utilisateur.

anacron.service -> ../anacron.service
apache2.service -> ../../apache2.service
...

Cela montre que apache2.service est lié ici, ce qui signifie qu'il est activé pour démarrer avec la cible multi-utilisateur.

Explorer le répertoire /etc/systemd/system vous aide à comprendre comment systemd organise et gère les services sur votre système.

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, nous avons commencé à explorer systemd sous Linux, en nous concentrant sur la manière de déterminer si un service système est "masqué" (masked). Masquer un service est une méthode pour le désactiver complètement, l'empêchant de démarrer dans toutes les circonstances. Nous avons appris à utiliser la commande systemctl is-masked pour vérifier l'état masqué de services spécifiques, constatant que apache2 n'était pas masqué tandis que systemd-udevd-kernel.socket l'était. Comprendre l'état masqué est une étape fondamentale pour résoudre les problèmes de démarrage de services.

Nous avons ensuite passé à l'utilisation de systemctl list-unit-files pour obtenir une vue plus large de tous les fichiers d'unités gérés par systemd, qui sont des fichiers de configuration représentant diverses ressources et services du système. Cette commande fournit une liste complète des unités et de leurs états, offrant une vision plus large de la configuration du système au-delà des vérifications de services individuels.