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 ! 🚀