Bonne façon d’utiliser systemctl Ubuntu pour contrôler systemd

Gérer un service ou un groupe de services sur un PC Linux moderne peut être fastidieux, c’est-à-dire si vous n’êtes pas sûr de ce que vous faites. Heureusement pour vous, Ubuntu Systemctl est là pour vous aider à gérer les services sur un PC Linux.

Dans ce tutoriel, vous apprendrez comment gérer les services Systemd sur un PC Ubuntu en exécutant différentes commandes systemctl.

Prêt ? Il est temps de plonger !

Prérequis

Ce tutoriel sera une démonstration pratique mais ne nécessite pas d’outils spéciaux. Tant que vous utilisez Ubuntu 16 ou une version ultérieure, vous êtes prêt à partir. Ce tutoriel utilise la version 20.04.3 LTS d’Ubuntu pour les démonstrations.

Qu’est-ce qu’Ubuntu Systemctl ?

Avant d’exécuter des commandes systemctl sur Ubuntu, familiarisez-vous d’abord avec ce qu’est Systemctl. Systemctl est un utilitaire en ligne de commande pour contrôler et gérer systemd ainsi que les services système.

En résumé, Systemctl est un panneau de contrôle ou un gestionnaire de services pour le système init de systemd afin d’initialiser les composants après le démarrage du noyau Linux. Systemctl est une collection de bibliothèques, de démons et d’utilitaires que vous pouvez utiliser pour gérer les services.

Pour gérer efficacement les services, familiarisez-vous avec les différents états de service suivants :

  • Activé – indique qu’un service est configuré pour démarrer lorsque le système démarre.
  • Désactivé – indique qu’un service est configuré pour ne pas démarrer lorsque le système démarre.
  • Actif – indique qu’un service est actuellement en cours d’exécution.
  • Inactif – indique qu’un service n’est pas actuellement en cours d’exécution mais peut démarrer lorsque certaines applications tentent de démarrer ce service.

Liste de tous les services

Maintenant que vous connaissez les différents états des services, peut-être voulez-vous voir une liste de tous les services sur votre PC Ubuntu. La liste de tous les services fournit quelques informations qui vous préparent à gérer les services.

Ouvrez votre terminal et exécutez la commande ci-dessous pour lister toutes les unités de service (list-units) (actives, en cours d’exécution, terminées ou en échec) avec le type de service défini en tant qu’unité (--type=service).

systemctl list-units --type=service

Choisissez l’un des services de la liste que vous souhaitez gérer plus tard dans ce tutoriel et notez le nom de l’UNITÉ (par exemple, apache2). Appuyez sur la barre d’espace pour faire défiler vers le bas, ou appuyez sur la touche « Q » pour quitter la commande.

Soit dit en passant, voici un bon guide sur le Scripting Shell Linux.

Listing All Services (active, running, exited, or failed)

Liste des services avec un état spécifique

Au lieu de répertorier tous les services, vous souhaitez peut-être restreindre la liste des services. Si tel est le cas, l’ajout du paramètre --state fera l’affaire, car il filtre les services avec l’état spécifique que vous spécifiez.

Exécutez l’une des commandes ci-dessous pour répertorier tous les services actifs (--type=service --state=active), à la fois en cours d’exécution et arrêtés.

systemctl list-units --type=service --state=active
Listing Services on “active” State

De même, pour répertorier uniquement les services arrêtés ou en cours d’exécution, modifiez la valeur de l’état de actif à en cours d'exécution ou arrêté, comme indiqué dans les commandes ci-dessous:

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

Liste des services activés

En plus de répertorier les services actifs, en cours d’exécution et arrêtés, vous pouvez également lister les services activés et désactivés en utilisant la commande grep.

Exécutez l’une des commandes ci-dessous pour répertorier (list-unit-files) les services désactivés ou activés (--type=service).

## Liste tous les services activés
systemctl list-unit-files --type=service | grep enabled
## Liste tous les services désactivés
systemctl list-unit-files --type=service | grep disabled

Prenez note d’un service activé, comme indiqué ci-dessous, car vous en aurez besoin plus tard pour désactiver un service, mais ce tutoriel utilise le service acpid.service à des fins de démonstration. Acpid est un démon extensible qui prend en charge les événements du Advanced Configuration and Power Interface (ACPI).

Listing Enabled Services

Affichage des propriétés du service

En plus de répertorier les services, vous voudrez peut-être vérifier les propriétés d’un service. Avoir un aperçu des propriétés du service est pratique pour le dépannage, les paramètres du processus ou le comportement de redémarrage.

Exécutez la commande ci-dessous pour afficher les propriétés d’un service (acpid.service) au format clé=valeur.

systemctl show acpid.service
Showing Service Properties

Maintenant, si vous ne recherchez qu’une propriété spécifique du service, vous pouvez utiliser le drapeau -p avec le nom de la propriété.

Exécutez la commande ci-dessous pour afficher la propriété MainPID d’un service (acpid.service).

systemctl show acpid.service -p MainPID
Showing Specific Service Property

Gestion d’un service spécifique

Maintenant que les bases de la liste des services sont établies, il est temps de gérer un service spécifique (unique) en exécutant les commandes systemctl stop et start.

Le service Apache (apache2) est utilisé pour les démonstrations suivantes, mais vous pouvez librement gérer le service que vous avez noté dans la section « Listing All Services ». Avant d’arrêter ou de démarrer un service, vous devez d’abord vérifier l’état du service.

Exécutez la commande suivante dans un terminal pour afficher les informations détaillées sur le service apache2 telles que son status.

systemctl status apache2

Ci-dessous, vous pouvez voir que le service apache2 est actif et en cours d’exécution.

Viewing apache2 Service Status

Il n’est pas nécessaire d’entrer le mot de passe sudo pour afficher l’état du service car vous ne modifiez pas l’état du service. Mais si vous démarrez, arrêtez ou redémarrez un service, vous devez préfixer la commande sudo et entrer le mot de passe sudo.

Arrêt d’un service

Peut-être souhaitez-vous arrêter un service qui est resté en suspens et qui continue de s’exécuter en arrière-plan. Dans ce cas, la commande systemctl stop est ce dont vous avez besoin. Exécutez la commande systemctl ci-dessous pour arrêter le service apache2.

sudo systemctl stop apache2

Si vous préférez arrêter plusieurs services simultanément, spécifiez chaque service séparé par un espace, comme ceci : sudo systemctl stop sshd apache2. Dans cette commande, vous arrêterez à la fois les services sshd et apache2 en une seule fois.

Maintenant, exécutez la commande systemctl status comme vous l’avez fait précédemment pour vérifier si le service apache2 s’est arrêté.

systemctl status apache2

Vous pouvez voir ci-dessous que l’état du service apache2 est passé à inactive (dead), ce qui indique que le service s’est arrêté.

Verifying if apache2 Service is Stopped

Démarrage d’un service

Maintenant, comment démarrer un service si vous remarquez qu’il ne fonctionne pas du tout ? Vous exécutez une commande similaire à l’arrêt du service, qui est la commande systemctl start. Exécutez la commande ci-dessous pour démarrer le service apache2.

sudo systemctl start apache2

Tout comme pour l’arrêt de plusieurs services, vous pouvez également démarrer plusieurs services en une seule ligne de commande. Remplacez la commande stop par la commande start comme ceci : sudo systemctl start sshd apache2

Exécutez maintenant la commande systemctl status une fois de plus pour vérifier si le service apache2 est en cours d’exécution.

systemctl status apache2

Si vous voyez le statut actif (en cours d’exécution), comme indiqué ci-dessous, alors vous êtes prêt car le service est de nouveau opérationnel.

Starting apache2 service

Si vous préférez redémarrer le service immédiatement sans avoir à l’arrêter d’abord. Si c’est le cas, optez pour la commande systemctl restart à la place, comme ceci : sudo systemctl restart apache2

Activer ou Désactiver un Service

Peut-être qu’il y a un service particulier que vous préférez soit démarrer soit empêcher de démarrer au démarrage du système. Si tel est le cas, l’exécution de la commande systemctl enable ou disable est la meilleure approche.

La sous-commande enable vous permet de configurer les paramètres de démarrage par défaut sur votre système, tandis que la sous-commande disable empêche un service de s’exécuter au démarrage du système.

Exécutez la commande systemctl ci-dessous pour désactiver le service (acpid.service) que vous avez noté dans la section « Listing Enabled Services ». Entrez votre mot de passe sudo pour autoriser l’exécution de la commande.

sudo systemctl disable acpid.service
Disabling a Service

Maintenant, étant donné que le service acpid.service prend en charge la configuration dirigée par le système d’exploitation et la gestion de l’alimentation (OSPM), vous devez le réactiver. La commande pour activer le service est similaire à celle pour désactiver un service.

Exécutez la commande systemctl ci-dessous pour activer acpid.service. Cette commande enregistre le service avec les paramètres de démarrage par défaut sur votre système.

sudo systemctl enable acpid.service
Enabling a Service

Conclusion

Dans ce tutoriel, vous avez réalisé à quelle vitesse vous pouvez arrêter, démarrer ou redémarrer des services en exécutant des commandes systemctl sous Ubuntu. Vous avez également appris que la commande systemctl vous permet de gérer non seulement un, mais plusieurs services simultanément.

Avec cette nouvelle connaissance, pourquoi ne pas automatiser le contrôle des services dans votre système Ubuntu ?

Source:
https://adamtheautomator.com/ubuntu-systemctl/