Linux mascot on a desk next to a laptop.
Agence web » Actualités du digital » Ces 12 commandes systemctl vous permettront de prendre le contrôle des services Linux systemd

Ces 12 commandes systemctl vous permettront de prendre le contrôle des services Linux systemd

La commande systemctl possède des fonctionnalités fréquemment négligées. En plus de démarrer et d'arrêter les services Linux, vous pouvez répertorier les services installés et vérifier dans quel état ils se trouvent. Voici un aperçu rapide.

Qu'est-ce que la commande systemctl ?

La commande systemctl est l'outil de gestion central du système d'initialisation systemd, probablement mieux connu comme l'outil utilisé pour démarrer et arrêter les services. Mais il y a plus que cela, comme en témoigne sa page de manuel longue de plus de 1 600 lignes.

Étant donné que systemctl est un outil de gestion, et pas seulement un lanceur de services, vous pouvez l'utiliser pour accéder à des informations utiles sur votre système et vos services systemd.

La plupart des distributions Linux ont adopté systemd, mais certaines ont choisi de conserver le système d'initialisation SystemV traditionnel. Si vous n'êtes pas sûr du schéma utilisé par votre distribution, c'est simple à découvrir. Nous utiliserons la commande stat pour examiner le fichier init.

        stat /sbin/init 
    

Le fichier exécutable /sbin/init est le premier processus lancé dans les distributions basées sur SystemV. Sur les distributions basées sur systemd, un lien symbolique portant ce nom pointe vers le fichier systemd.

La première ligne de sortie nous montre que sur cette machine de test Ubuntu, /sbin/init est un lien symbolique vers le fichier /lib/systemd/systemd. De toute évidence, cette installation Linux utilise systemd. S'il s'agissait d'une distribution basée sur SystemV, la ligne contiendrait uniquement « File: /sbin/init ».

Interrogation des services avec systemctl

Les services sont définis dans des fichiers d'unité et vous verrez le mot unit dispersé dans les options systemctl. A titre d'exemple, nous pouvons obtenir une liste de services avec la commande list-units avec l'option –type.

        systemctl list-units --type=service
    

La sortie est affichée dans la visionneuse de fichiers less, vous permettant de faire défiler la sortie et d'utiliser la touche / pour rechercher.

  • Unité: Le nom du fichier unité.
  • Charger: Si le fichier d'unité du service a été lu en mémoire sans erreur de syntaxe, cette colonne contiendra « chargé ». Cela ne signifie pas que le service est actif.
  • Actif: Une vue de haut niveau indiquant si un service est actif. Un service actif n'est peut-être pas en cours d'exécution.
  • Sous: une vue plus granulaire indiquant si un service est en cours d'exécution. Par exemple, un service actif peut être synchronisé avec un minuteur et avoir quitté sa dernière exécution.
  • Description: Une ligne de texte destinée à identifier ou décrire le service.

L'affichage inclut uniquement les services actifs. Pour voir tous les services, nous devons inclure l’option –all.

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

Si tout voir ressemble trop à une surcharge d’informations, nous pouvons filtrer la sortie avec l’option –state.

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

L'option d'état acceptera l'exécution, l'arrêt, l'activation, la désactivation et l'échec.

Pour vous concentrer sur les services défaillants, utilisez l'option –failed.

        systemctl list-units --failed
    

Il n'y a aucune unité défaillante sur cet ordinateur.

Si vous voyez des services en échec, utilisez l'option list-dependencies pour vérifier s'il existe des dépendances non satisfaites.

        systemctl list-dependencies sshd.service
    

Les dépendances ont un cercle de couleur représentant leur état. Cela peut être :

  • Cercle blanc: Inactif ou maintenance
  • Point vert: Actif.
  • Point blanc: Désactivation.
  • Point rouge: Échec ou erreur.

Pour vérifier si un seul service est activé, utilisez la commande is-enabled et fournissez le nom du fichier unité du service.

        systemctl is-enabled htg-example.service
    

Contrôler les services avec systemctl

Utiliser systemctl pour gérer les services est très simple et suit le format des commandes que nous avons vues jusqu'à présent. La plus grande différence est que vous devrez utiliser sudo pour modifier les états des services. Nous n'avons pas eu besoin de l'utiliser jusqu'à présent, car nous n'avons rendu compte que des états de service.

Pour démarrer un service, utilisez la commande start suivie du nom du service.

        sudo systemctl start htg-example.service
    

Si tout se passe bien, vous revenez silencieusement à l'invite de commande. Si vous préférez avoir une confirmation positive, vous pouvez obtenir une vérification à partir de la commande status.

        sudo systemctl status htg-example.service
    

Arrêter un service est aussi simple que d’en démarrer un.

        sudo systemctl stop htg-example.service
    

Vous pouvez redémarrer un service sans avoir à passer par le processus en deux étapes consistant à l'arrêter puis à le démarrer manuellement. La commande de redémarrage fait tout pour vous.

        sudo systemctl restart htg-example.service
    

Si vous souhaitez qu'un service démarre au démarrage, vous devez l'activer.

        sudo systemctl enable htg-example.service
    

Notez que cela signale simplement le service afin qu'il démarre au moment du démarrage, il ne le démarre pas immédiatement. Si c'est ce que vous voulez, ajoutez l'indicateur –now.

        sudo systemctl enable --now htg-example.service
    

Lorsque vous n'avez plus besoin d'un service pour démarrer au démarrage, désactivez-le.

        sudo systemctl disable htg-example.service
    

Vous pouvez utiliser la commande journalctl, une autre partie de systemd, pour rechercher les entrées relatives à votre service liées dans le fichier . L'option -u (unité) vous permet de spécifier le service qui vous intéresse. Avec l'option -S (depuis), vous pouvez afficher les entrées qui se sont produites depuis le moment que vous fournissez.

        journalctl -S "08:00:00" -u htg-example.service
    

Tout ce qui vous aide à mieux comprendre le fonctionnement interne de votre distribution Linux sera un outil utile pour la gestion quotidienne ainsi que pour le dépannage et le diagnostic des problèmes. La commande systemctl n'est pas un outil unique. Il s'agit plutôt d'un coffre à outils composé d'outils spécialisés et qui vaut la peine d'être abordé.

★★★★★