Exemples de commandes Systemctl

Systemctl Command Examples

Si vous utilisez une distribution Linux populaire, notamment Debian, Ubuntu, Arch, openSUSE ou Fedora, votre système utilise systemd comme système d'initialisation.

Bien sûr, il y acontroverses autour de systemd. Mais c’est le système d’initialisation le plus utilisé.

Dans une distribution équipée de systemd, il existe une commande qui pourrait vous faciliter la vie. C'est lesystèmectlcommande, utilisée pour interagir avec le service d'initialisation systemd. Les administrateurs système utilisent toujours cette commande, mais elle est également utile pour les utilisateurs finaux souhaitant prendre le contrôle via le terminal.

Par exemple, vous pouvez utiliser la commande systemctl pourlister les services sous Linux.

Donc, dans ce tutoriel, je vais vous expliquer tous les éléments essentiels dont vous avez besoin pour apprendre à utiliser la commande systemctl :

  • La syntaxe de base et les indicateurs communs.
  • Exemples pratiques de la commande.
  • Pratiquez des questions pour mieux utiliser la commande systemctl.

Voici comment utiliser la commande Systemctl

Pour utiliser la commande systemctl, il est important d'apprendre la syntaxe et les options disponibles.

Voici à quoi ressemble la syntaxe :

systemctl <command> <service_name>

Ici,

  • <command>: c'est ici que vous spécifiez l'action que vous souhaitez exécuter sur le service telle questop,start, etc.
  • <service_name>: c'est ici que vous précisez le nom du service avec lequel vous souhaitez travailler.

Pour gérer les services, vous disposez de différentes commandes à utiliser avec la commande systemctl, voici une liste des plus utiles :

Commande Description
systemctl start [service] Démarrez un service et exécutez-le en arrière-plan.
systemctl stop [service] Arrêtez un service en cours d'exécution.
systemctl enable [service] Configurez un service pour qu'il démarre automatiquement au démarrage du système.
systemctl disable [service] Configurez un service pour qu'il ne démarre pas automatiquement au démarrage du système.
systemctl status [service] Afficher l'état actuel (en cours d'exécution, arrêté, etc.) d'un service.
systemctl restart [service] Arrêtez un service en cours d'exécution, puis redémarrez-le.
systemctl reload [service] Recharger la configuration d'un service sans l'arrêter.
systemctl mask [service] Empêcher le démarrage d'un service, même manuellement.
systemctl unmask [service] Autoriser le démarrage d'un service précédemment masqué.
systemctl set-default [target] Modifiez la cible système par défaut (niveau d'exécution) pour le prochain démarrage.
systemctl list-unit-files Répertoriez tous les fichiers d'unité installés et leur état actuel (activé/désactivé).
systemctl list-dependencies [unit] Afficher les dépendances (autres unités) requises pour une unité spécifique.
systemctl list-sockets Répertoriez toutes les sockets actives (pour la communication inter-processus).
systemctl list-jobs Afficher toutes les tâches systemd actuellement actives (opérations en cours).
systemctl list-units Répertoriez toutes les unités systemd chargées et actives (services, sockets, etc.).

Jetons maintenant un coup d'œil à quelques exemples pratiques de la commande systemctl.

Exemples pratiques de la commande systemctl

Dans cette section, je partage quelques exemples pratiques de la commande systemctl, allant des bases aux plus avancées.

Commençons par comment démarrer votre service.

1. Démarrez un service

Dans la plupart des cas, le service installé est activé par défaut, mais il arrive parfois que vous deviez le faire manuellement.

Pour démarrer un service, vous devez utiliser lestartflag avec la commande systemctl et ajoutez le nom du service, comme indiqué ici :

sudo systemctl start <service_name>

Disons que je veux démarrer le serveur Apache, j'utiliserai ce qui suit :

sudo systemctl start apache2
Systemctl Command Examples

2. Activer un service

Lorsque vous démarrez un service, il ne sera efficace que jusqu'au prochain démarrage. Cela signifie que le service sera désactivé lorsque vous redémarrerez votre système.

Pour résoudre cette situation, vous souhaitez qu'un service démarre automatiquement lorsque vous démarrez votre système et à cet effet, vous pouvez utiliser leenabledrapeau comme indiqué ici :

sudo systemctl enable <service_name>

Par exemple, si je souhaite activer le service Apache, j'utiliserai ce qui suit :

sudo systemctl enable apache2
Systemctl Command Examples

3. Arrêtez un service

Lorsque vous envisagez de modifier un service actif, la première étape à effectuer est d'arrêter le service et pour cela, vous utilisez lestopdrapeau comme indiqué ici :

sudo systemctl stop <service_name>

Par exemple, voici comment arrêter le service Apache :

sudo systemctl stop apache2
Systemctl Command Examples

4. Désactiver un service

Si vous avez activé un service dans le passé et que vous ne souhaitez plus qu'il soit actif à chaque démarrage du système, vous pouvez le désactiver.

Pour désactiver un service, vous utilisez ledésactiverdrapeau comme indiqué ici :

sudo systemctl disable <service_name>

Pour désactiver le service Apache, j'utilise la commande suivante :

sudo systemctl disable apache2
Systemctl Command Examples

5. Vérifier l'état d'un service

Vérifier l'état avant d'effectuer toute action sur un service est fortement recommandé et peut vous faire gagner beaucoup de temps.

Pour vérifier l'état d'un service, il suffit d'ajouter le nom du service austatusdrapeau comme indiqué ici :

systemctl status <service_name>

Ici, je vérifie l'état du service Apache :

systemctl status apache2
Systemctl Command Examples

Comme j'ai désactivé le service Apache plus tôt, le résultat ci-dessus suggère que le service est désactivé.

Mais en fonction de votre service, vous pouvez recevoir un statut de service différent, et voici ce que cela signifie :

Statut Description
active (running) Le service fonctionne actuellement en arrière-plan.
active (exited) Le service était une tâche ponctuelle ou périodique dont l'exécution était terminée.
active (waiting) Le service est en cours d'exécution mais attend qu'un événement ou une condition spécifique se produise avant de continuer.
inactive Le service n'est pas en cours d'exécution actuellement.
enabled Le service est configuré pour démarrer automatiquement au démarrage du système.
disabled Le service est configuré pour ne pas démarrer automatiquement au démarrage du système.
static Ce service ne peut pas être géré par systemd ou la commande systemctl ; il doit être géré manuellement.
masked Le service est masqué, ce qui signifie qu'il ne peut pas être démarré (il doit être démasqué avant de pouvoir s'exécuter).
alias Le nom du service est un alias et le service est un lien symbolique pointant vers un autre fichier unité.
linked Le fichier de service ou d'unité est symboliquement lié à un autre fichier d'unité.

6. Redémarrez un service

Une fois que vous avez modifié la configuration du service, ou s'il ne répond pas, le redémarrage d'un service peut être utile.

Pour redémarrer un service, vous utilisez lerestartdrapeau comme indiqué ici :

sudo systemctl restart <service_name>

Par exemple, mon serveur Apache ne répondait pas, donc si je devais redémarrer le service, alors j'utilise la commande suivante :

sudo systemctl restart apache2

7. Recharger un service

sudo systemctl unmask <service_name>

Vous rechargez un service lorsque vous apportez des modifications à la configuration du service et que vous souhaitez appliquer les modifications sans redémarrer l'intégralité du service.

sudo systemctl unmask <service_name>

Pour recharger un service, vous utilisez lereloaddrapeau comme indiqué ici :

sudo systemctl reload <service_name>

Par exemple, j'ai apporté quelques modifications au service Apache et maintenant si je devais recharger le service Apache, voici ce que je tape dans le terminal :

sudo systemctl reload apache2

8. Masquer un service

Le masquage d'un service est le moyen le plus efficace d'empêcher son démarrage, manuellement ou automatiquement, lors du démarrage du système.

Considérez-le comme une version plus robuste de l'arrêt du service 😉.

Pour masquer un service, vous utilisez lemaskdrapeau comme indiqué ici :

sudo systemctl mask <service_name>

Voici à quoi ressemblerait la commande pour le service Apache :

sudo systemctl mask apache2
Systemctl Command Examples

Chaque fois que vous masquez le service, un lien symbolique est créé qui redirige le fichier de configuration du service vers le périphérique nul (/dev/null). Cela signifie que vous ne pouvez en aucun cas démarrer le service tant qu’il n’est pas démasqué.

9. Démasquer un service

Si vous souhaitez démarrer le service masqué, il faut d'abord le démasquer !

Pour démasquer un service, vous utilisez leunmaskdrapeau comme indiqué ici :

sudo systemctl unmask <service_name>

Tapez simplement la commande comme ceci :

sudo systemctl unmask apache2
Systemctl Command Examples

Comme vous pouvez le voir, il a supprimé le lien symbolique pointant vers/dev/null.

10. Définir la cible par défaut

La définition d'une cible par défaut fait référence à la modification du mode de fonctionnement ou du niveau d'exécution par défaut dans lequel le système entrera après le démarrage.

Un bon exemple de définition d'une cible par défaut consiste à choisir l'interface utilisateur à démarrer, par exemple en mode CLI ou en interface graphique.

Pour définir une cible par défaut, vous utilisez leset-defaultdrapeau comme indiqué ici :

sudo systemctl set-default <target-name>

Par exemple, si vous souhaitez démarrer dans l'interface graphique, je définirai la cible par défaut surgraphical.targetcomme indiqué ici :

sudo systemctl set-default graphical.target

Outre la cible GUI, vous disposez également d’autres options :

Cible Description
multi-user.target Cette cible démarre le système avec la mise en réseau activée, adaptée aux serveurs ou aux postes de travail non graphiques.
rescue.target Cette cible est utile pour la récupération du système ou le dépannage lorsque le système ne peut pas démarrer en mode multi-utilisateur normal.
emergency.target Cet objectif fournit un environnement d'urgence pour la maintenance ou la réparation du système lorsque le système est dans un état critique de panne.
reboot.target Ceci est généralement utilisé pour des redémarrages ponctuels ou dans des scripts automatisés.
poweroff.target Ceci est généralement utilisé pour des arrêts ponctuels ou dans des scripts automatisés.
hibernate.target Définit le système pour hiberner (enregistrer l'état du système sur le disque et mettre hors tension) comme cible par défaut. Disponible uniquement si le système prend en charge l'hibernation.
hybrid-sleep.target Définit le système pour qu'il passe en mode veille hybride (une combinaison d'hibernation et de veille) comme cible par défaut. Disponible uniquement si le système prend en charge la veille hybride.

11. Liste des fichiers d'unité

Les fichiers d'unité sont des fichiers de configuration en texte brut utilisés pour définir et gérer les services et les unités système.

Vous pouvez lister tous les fichiers unité en exécutant la commande suivante :

systemctl list-unit-files
Systemctl Command Examples

12. Liste de toutes les sockets actives

Lorsque vous répertoriez tous les sockets actifs, vous obtenez un aperçu des canaux de communication inter-processus établis sur un système basé sur systemd.

Pour lister toutes les sockets actives, utilisez la commande donnée :

systemctl list-sockets
Systemctl Command Examples

Et là vous avez une liste de toutes les sockets qui écoutent les requêtes entrantes.

Questions pratiques 📓

Une fois que vous connaissez les bases de la commande systemctl, il est important de vous entraîner à mieux utiliser la commande.

Voici quelques questions pratiques pour la commande systemctl :

  1. Comment vérifieriez-vous l'état duhttpdservice utilisantsystèmectl?
  2. Écrivez la commande pour démarrer lesshdservice s’il n’est pas déjà en cours d’exécution.
  3. Vous souhaitez activer lemysqldservice pour démarrer automatiquement au démarrage du système. Quelle commande utiliseriez-vous pour faire cela ?
  4. Supposons que vous ayez besoin de recharger la configuration dunginxservice sans interrompre son fonctionnement. Quoisystèmectlcommande utiliseriez-vous ?
  5. Votre système est actuellement configuré pour démarrer dans lemulti-user.targetpar défaut. Vous souhaitez modifier la cible par défaut engraphical.targetpour le prochain démarrage. Comment utiliseriez-vous pour y parvenir ?

Si vous rencontrez des difficultés à résoudre les questions ci-dessus, vous pouvez poster vos requêtes dansnotre forum communautaireou déposez un commentaire ci-dessous.

Emballer

Maintenant que vous connaissez l’essentiel de la commande systemctl, quelle est la prochaine étape ?

Eh bien, si vous souhaitez explorer et expérimenter, vous pouvez créer votre propre service systemd. Voici commentécrivez votre propre service systemd sous Linux :

Article original