Découvrez la Commande systemctl

La commande systemctl est un outil essentiel pour gérer les services et unités dans les systèmes basés sur systemd sous Unix/Linux. Elle permet de démarrer, arrêter, redémarrer, et vérifier l’état des services. Cet article vous guidera à travers ses diverses options et comment l’utiliser dans vos scripts.

Utilisation de Base de systemctl

Pour commencer, la commande de base systemctl s’utilise simplement en tapant :

systemctl status

Cela affichera l’état global du système et les services en cours d’exécution.

Options Courantes de systemctl

Voici quelques-unes des options les plus couramment utilisées :

  • systemctl start : Démarre un service.
  systemctl start apache2

Exemple :

  (aucune sortie si la commande réussit)
  • systemctl stop : Arrête un service.
  systemctl stop apache2

Exemple :

  (aucune sortie si la commande réussit)
  • systemctl restart : Redémarre un service.
  systemctl restart apache2

Exemple :

  (aucune sortie si la commande réussit)
  • systemctl status : Vérifie l’état d’un service.
  systemctl status apache2

Exemple :

  ● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-08-01 12:00:00 UTC; 1h 20min ago
   Main PID: 1234 (apache2)
      Tasks: 55 (limit: 4915)
     Memory: 12.0M
     CGroup: /system.slice/apache2.service
             ├─1234 /usr/sbin/apache2 -k start
             ├─5678 /usr/sbin/apache2 -k start
             └─9012 /usr/sbin/apache2 -k start
  • systemctl enable : Active un service pour qu’il démarre au démarrage du système.
  systemctl enable apache2

Exemple :

  Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.
  • systemctl disable : Désactive un service pour qu’il ne démarre pas au démarrage du système.
  systemctl disable apache2

Exemple :

  Removed /etc/systemd/system/multi-user.target.wants/apache2.service.

Utilisation de systemctl dans les Scripts

La commande systemctl est également très utile dans les scripts shell pour automatiser la gestion des services. Voici un exemple simple de script utilisant systemctl (attribuer les bons privilèges au script) :

#!/bin/bash

# Démarrer le service Apache
echo "Démarrage du service Apache..."
systemctl start apache2

# Vérifier l'état du service Apache
echo "État du service Apache :"
systemctl status apache2

# Activer le service Apache au démarrage
echo "Activation du service Apache au démarrage..."
systemctl enable apache2

Exemple Pratique

Supposons que vous ayez besoin de surveiller un service spécifique et de redémarrer ce service s’il s’arrête. Voici un script qui utilise systemctl pour accomplir cela (attribuer les bons privilèges au script) :

#!/bin/bash

# Nom du service à surveiller
SERVICE="apache2"

# Vérifier l'état du service
if systemctl is-active --quiet $SERVICE; then
    echo "Le service $SERVICE est en cours d'exécution."
else
    echo "Le service $SERVICE est arrêté. Redémarrage en cours..."
    systemctl start $SERVICE
    if systemctl is-active --quiet $SERVICE; then
        echo "Le service $SERVICE a été redémarré avec succès."
    else
        echo "Échec du redémarrage du service $SERVICE."
    fi
fi

Explication :

  • systemctl is-active --quiet $SERVICE : Vérifie si le service est actif sans afficher de sortie.
  • systemctl start $SERVICE : Démarre le service si celui-ci est arrêté.

Exemple :

Le service apache2 est arrêté. Redémarrage en cours...
Le service apache2 a été redémarré avec succès.

Conclusion

La commande systemctl est un outil essentiel pour gérer les services et unités dans les systèmes basés sur systemd sous Unix/Linux. En combinant ses différentes options et en l’intégrant dans des scripts, vous pouvez automatiser efficacement vos tâches de gestion des services. Essayez ces commandes et scripts pour mieux maîtriser votre environnement de travail ! 🚀