Notions de base sur la gestion des services : commandes systemctl
(démarrer, arrêter, redémarrer les services)
1. C'est quoi les services dans Linux ?
Les services, c'est la base de toute distribution Linux moderne. Tu veux lancer ton serveur web sur Nginx ? Lance et configure le service correspondant. Tu veux que ta base de données MySQL fonctionne ? Encore une fois, c'est un service. Même ton cher cron
, qui exécute des bash-scripts louables, c'est aussi un service. Gérer les services, c'est une compétence que tu utiliseras non seulement au travail, mais aussi pour tes projets perso. D'ailleurs, en entretien, la question "Et comment tu arrêtes un service ?" revient plus souvent que tu ne pourrais le penser.
Définition et rôle
Un service dans Linux, c'est un programme qui fonctionne en arrière-plan (c'est-à-dire comme un démon, de l'anglais "daemon"). Ces programmes peuvent se lancer automatiquement au démarrage du système ou manuellement si besoin. Ils sont responsables de tâches spécifiques comme :
- Gestion des requêtes web (par exemple,
nginx
/apache
). - Support d'accès à distance (par exemple,
openssh
). - Lancement de tâches planifiées (par exemple,
cron
).
En gros, les services, ce sont "les chevaux de travail" qui accomplissent des tâches invisibles pour l'utilisateur, mais super critiques pour le fonctionnement du système.
2. Bases de la gestion des services avec systemctl
Qu'est-ce que systemctl
?
Commençons par dire que systemctl
est la commande principale pour gérer les services dans les systèmes qui utilisent systemd. Si votre système fonctionne sous une distribution Linux moderne (par exemple, Ubuntu, Fedora ou CentOS), il utilise probablement systemd
.
Les fonctions principales
- Démarrage d’un service : lancer un service s'il est désactivé.
- Arrêt d’un service : arrêter un service en cours d'exécution.
- Redémarrage d’un service : arrêter puis relancer un service.
- Vérification du statut : connaître l'état actuel d'un service.
Voici la structure de base de la commande :
sudo systemctl [action] [nom_du_service]
Démarrage et arrêt d’un service
Démarrage :
Imaginez que vous avez installé un serveur web nginx
et que vous souhaitez le démarrer. Pour cela, on utilise la commande start
:
sudo systemctl start nginx
Arrêt :
Mais si vous voulez désactiver temporairement le serveur web ? La commande stop
est là pour vous :
sudo systemctl stop nginx
Redémarrage d’un service
Le redémarrage est utile pour appliquer des modifications de configuration ou simplement « rafraîchir » le service (en gros, lui donner un petit café et lui rappeler qu'il est temps de bosser). Utilisez la commande restart
:
sudo systemctl restart nginx
Vérification du statut
Vous n'êtes pas sûr si nginx
est en cours de fonctionnement ? La commande status
fournit toutes les informations nécessaires :
sudo systemctl status nginx
En sortie, vous verrez :
- Un identifiant unique de processus (PID).
- Heure de démarrage.
- Logs d'erreurs, si quelque chose a mal tourné.
Exemple de sortie :
nginx.service - A high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
...
3. Démarrage automatique des services
Activer le démarrage automatique
Pour que le service démarre automatiquement à chaque démarrage du système, utilisez :
sudo systemctl enable nginx
Désactiver le démarrage automatique
Et si vous souhaitez que le service ne démarre plus au lancement :
sudo systemctl disable nginx
Voici un moyen simple de vérifier si le démarrage automatique est activé :
systemctl is-enabled nginx
Pratique de gestion des services
Faisons un exercice complet avec l'exemple du service cron
.
Démarrez le service
cron
:sudo systemctl start cron
Vérifiez s'il fonctionne :
sudo systemctl status cron
Assurez-vous que le statut est "active (running)".
Arrêtez le service
cron
:sudo systemctl stop cron
Vérifiez que le statut est passé à "inactive (dead)".
Redémarrez le service
cron
:sudo systemctl restart cron
4. Différences entre les services actifs, désactivés et arrêtés suite à une erreur
Les services peuvent avoir différents états. Voici leurs principaux types :
- Active (running) — le service fonctionne activement ; tout va bien.
- Inactive (dead) — le service est arrêté.
- Failed — une erreur s'est produite lors du démarrage, de l'arrêt ou de l'exécution du service.
Pour trouver rapidement tous les services qui sont en état d'erreur, utilise :
systemctl --failed
5. Erreurs typiques et pièges
Erreur : Unit not found
Si tu reçois un message du type :
Failed to start nginx.service: Unit nginx.service not found.
Cela peut signifier que le service dont tu as besoin n'est pas installé ou que son nom est incorrect. Vérifie le nom correct :
systemctl list-unit-files | grep nginx
Erreur de permissions
Si tu oublies de lancer la commande avec les droits sudo
, tu recevras probablement un refus d'accès :
Permission denied
N'oublie pas d'ajouter sudo
avant les commandes systemctl
.
6. Application dans des projets réels
La gestion des services, c’est un truc que tu utiliseras dans n’importe quel rôle lié à Linux :
- DevOps : automatisation et gestion de tous les services systèmes.
- Administration de serveurs : contrôle de l’état des serveurs web, des bases de données et d’autres services.
- Développement sous Linux : tu dois comprendre comment gérer les services liés à ton projet (par exemple, démarrer des serveurs de développement).
Du coup, connaître la commande systemctl
, ce n’est pas juste une compétence abstraite, mais un outil réel pour bosser. Exemple : tu dois redémarrer un serveur web après une mise à jour du site ? Une seule commande sudo systemctl restart nginx
— et c’est plié !
GO TO FULL VERSION