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.
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é 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.



