79 votes

Pourquoi certains services systemd sont-ils dans l'état "masked"?

Lorsque j'exécute la commande sudo systemctl list-unit-files (je pense que le sudo est optionnel), j'obtiens en sortie un affichage qui montre tous les services et leur état.

Voici un extrait de ma machine :

FICHIER UNITÉ                            ÉTAT
...
debian-fixup.service                       statique  
debug-shell.service                        désactivé
display-manager.service                    activé 
dns-clean.service                          activé 
dsmcad.service                             activé 
emergency.service                          statique  
failsafe-x.service                         statique  
friendly-recovery.service                  masqué  
fuse.service                               masqué  
gdm.service                                masqué  
getty-static.service                       statique  
getty@.service                             activé 
gpsd.service                               indirect
gpsdctl@.service                           statique  
gpu-manager.service                        activé 
halt-local.service                         statique  
halt.service                               masqué  
hostname.service                           masqué
...

Je me demande pourquoi certains services sont dans l'état "masqué". Je pense que cela signifie, "c'est mieux que 'désactivé', car le service ne peut pas être démarré, ni manuellement ni par systemd".

Comment puis-je obtenir plus d'informations sur l'état d'une unité de service ?

Qui a mis les unités dans leur état respectif ?

J'ai essayé, par exemple, sudo systemctl help dsmcad - cela affiche uniquement la ligne documentation = ... du fichier d'unité. /etc/systemd/system/dsmcad.service

Remarque: Ici je sais exactement ce qu'est le service dsmcad et ce qu'il fait, je l'ai moi-même installé. Je suis plus intéressé par une solution générale.

84voto

Lesia Points 11

masque est une version renforcée de désactiver. En utilisant désactiver, tous les liens symboliques du fichier d'unité spécifié sont supprimés. En utilisant masque, les unités seront liées à /dev/null. Cela s'affichera si vous vérifiez par exemple avec systemctl status halt.service. L'avantage de masque est d'empêcher tout type d'activation, même manuelle.

Attention : systemctl list-unit-files répertorie l'état des fichiers d'unité (statique, activé, désactivé, masqué, indirect) et n'a rien à voir avec l'état du service. Pour jeter un œil aux services, utilisez systemctl list-units.

3voto

Black Horus Points 892

hostname.service est masqué comme redondant car systemd définit le nom d'hôte (à partir de /etc/hostname) très tôt lors du démarrage.

Ce paramètre est fourni par le paquet systemd de Debian.

$ ls -l /lib/systemd/system/hostname.service
lrwxrwxrwx 1 root root 9 Apr  8 22:47 /lib/systemd/system/hostname.service -> /dev/null
$ dpkg-query --search /lib/systemd/system/hostname.service
systemd: /lib/systemd/system/hostname.service

De même, Debian peut maintenant fonctionner sans script shell pour halt le système, c'est géré par systemd-shutdown (code source ici) à la place.

Si un service a été masqué manuellement, le masque sera installé dans /etc/systemd/system à la place.

Les services sont également masqués lorsqu'ils sont supprimés sur Debian/Ubuntu. Je ne sais pas pourquoi.

3voto

Thiago Conrado Points 309

Étant donné que vous demandez des informations sur l'état masqué, il est important de mentionner qu'il peut être observé dans un service qui, une fois démarré, a eu ses définitions modifiées, rechargées (systemctl daemon-reload) et le nouvel état n'est PAS ok. Un exemple simple pour le comprendre est le scénario suivant :

a) le service fonctionne bien (déjà démarré)
b) éditer le fichier de définition du service et supprimer tout son contenu
c) recharger
d) l'état masqué sera également observé

Par conséquent, l'état masqué peut provenir de définitions de service incorrectes. Par conséquent, l'utilisateur peut induire un état non masqué en éditant de manière incorrecte le service.

Observation : Je ne suis pas sûr si cela se produit délibérément ou s'il s'agit d'un simple bug (option par défaut), mais cela pourrait être une information intéressante à partager

3voto

d. Quame Points 31

'masque' est un état des fichiers d'unité qui est considéré comme le "troisième niveau d'arrêt" (stop-1er, désactiver-2ème, masque-3ème). Les services étiquetés comme masqués ne peuvent ni être démarrés manuellement (en utilisant la commande démarrer) ni par les systèmes (au démarrage du système). Par conséquent, faites preuve de prudence lorsque vous utilisez la commande systemctl mask sur un service.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X