Bonjour ! Dans la leçon précédente, vous avez appris à gérer les logiciels sur votre serveur avec le gestionnaire de paquets apt. Vous savez maintenant comment installer, mettre à jour et supprimer des programmes. C'est une compétence fondamentale.
Aujourd'hui, nous allons nous concentrer sur un type particulier de logiciel : les services, aussi appelés démons (daemons en anglais). Ce sont des programmes qui tournent en arrière-plan pour fournir des fonctionnalités essentielles, comme un serveur web, une base de données ou un service de connexion à distance.
L'objectif de cette leçon est de vous apprendre à gérer ces services avec la commande systemctl. Vous saurez comment les démarrer, les arrêter, vérifier leur état et, point crucial, vous assurer qu'ils se lancent automatiquement au démarrage du serveur. Maîtriser systemctl est une étape indispensable pour tout administrateur système.
1. Qu'est-ce qu'un service et qui le gère ?
Un service est un programme conçu pour fonctionner en continu, sans interaction directe de l'utilisateur. Par exemple, lorsque vous installez un serveur web, le logiciel du serveur web doit tourner 24h/24 et 7j/7 pour pouvoir répondre aux requêtes des visiteurs.
Sur les systèmes Linux modernes comme Ubuntu, l'orchestration de tous ces services est gérée par un programme central appelé systemd. C'est le tout premier processus lancé au démarrage du système (il a le PID 1), et il est responsable de démarrer tout le reste, y compris les services dont votre serveur a besoin.
Pour interagir avec systemd et lui donner des ordres, nous utilisons un outil en ligne de commande : systemctl.

Pour mieux comprendre le rôle de systemd, je vous propose de visionner cette courte introduction.
Cours UNIX/Linux #8 : Gestionnaire de démons (systemd)
Cette vidéo de RevaninioComputing explique ce qu'est systemd et pourquoi il est devenu le standard pour la gestion des services sur la plupart des distributions Linux.
Regardez la vidéo du début jusqu'à 02:45. Concentrez-vous sur le rôle de systemd comme gestionnaire de services et l'introduction de systemctl comme la commande pour l'utiliser.
2. Le cycle de vie d'un service avec systemctl
Pour manipuler un service, nous avons besoin d'en avoir un à notre disposition. Dans la leçon précédente, vous avez installé nmap, qui est un outil ponctuel et non un service. Nous allons donc installer un véritable service : Apache2, l'un des serveurs web les plus populaires au monde.
Ouvrez le terminal de votre machine virtuelle Ubuntu et exécutez les commandes suivantes :
# D'abord, on met à jour la liste des paquets
sudo apt update
# Ensuite, on installe le paquet apache2
sudo apt install apache2 -y
Une fois l'installation terminée, le service apache2 a été automatiquement démarré. Nous allons maintenant utiliser systemctl pour le gérer.
Étape 1 : Vérifier l'état d'un service (status)
La commande la plus importante est status. Elle vous donne un bulletin de santé complet d'un service.
sudo systemctl status apache2
Vous verrez une sortie détaillée. Repérez ces lignes clés :
Loaded: loaded (...):systemda bien trouvé et chargé le fichier de configuration du service.Active: active (running): Le service est actuellement en cours d'exécution. C'est le point vert ! S'il était arrêté, vous verriezinactive (dead).Main PID: ...: L'identifiant du processus principal du service.- Les dernières lignes sont des extraits du journal du service, très utiles pour un premier diagnostic en cas de problème.
Cette vidéo vous montre comment interpréter la sortie de la commande status.
Cours UNIX/Linux #8 : Gestionnaire de démons (systemd)
Regardez cet extrait qui détaille la commande systemctl status en utilisant firewalld (le pare-feu) comme exemple. Les informations présentées sont identiques à ce que vous voyez pour Apache.
Visionnez la vidéo de 09:35 à 12:22. Portez une attention particulière à l'explication des lignes Loaded et Active.
Étape 2 : Arrêter et démarrer un service (stop, start)
Maintenant, arrêtons le serveur web.
sudo systemctl stop apache2
Vérifiez immédiatement son état :
sudo systemctl status apache2
Vous devriez maintenant voir Active: inactive (dead) et le point est devenu gris.

Pour le redémarrer, la commande est tout aussi intuitive :
sudo systemctl start apache2
Vérifiez à nouveau avec status pour confirmer qu'il est bien active (running).
Étape 3 : Redémarrer un service (restart)
Souvent, après avoir modifié un fichier de configuration, il faut redémarrer le service pour que les changements soient pris en compte. La commande restart est un raccourci pratique qui combine stop et start.
sudo systemctl restart apache2
Cette commande va arrêter le service s'il tournait, puis le démarrer. Si le service était déjà arrêté, elle le démarrera simplement.
Cours UNIX/Linux #8 : Gestionnaire de démons (systemd)
Les commandes stop, start et restart sont le cœur de la gestion des services. Cet extrait vidéo vous les montre en action.
Regardez la vidéo de 12:22 à 15:24. Elle vous montrera successivement les commandes stop, start et restart et comment vérifier le changement de statut à chaque fois.
3. Gérer le démarrage automatique (enable vs disable)
C'est ici que se situe la plus grande source de confusion pour les débutants. Il faut bien distinguer l'état d'exécution (le service tourne-t-il maintenant ?) de l'état d'activation (le service démarrera-t-il au prochain boot ?).
start/stopaffectent l'état d'exécution (maintenant).enable/disableaffectent l'état d'activation (au prochain démarrage).
Pour bien comprendre, je vous invite à lire la section suivante d'un article qui explique très clairement cette distinction.
systemd et systemctl : gérer les services Linux
L'article "systemd et systemctl" de Stéphane Robert contient une section parfaite pour clarifier la différence entre un service actif (active) et un service activé (enabled).
Lisez attentivement la section "Glossaire rapide" et surtout la sous-section "Les deux états à ne pas confondre". Le schéma visuel est particulièrement éclairant.
Maintenant, mettons cela en pratique. Par défaut, apache2 est activé à l'installation.
Désactivons-le pour qu'il ne démarre plus avec le serveur :
sudo systemctl disable apache2
Vérifiez le statut :
sudo systemctl status apache2
Remarquez deux choses :
- Le service est toujours
Active: active (running)! La commandedisablen'arrête pas le service. - La ligne
Loadedindique maintenant...; disabled; ....
Pour qu'il se lance à nouveau automatiquement au démarrage, réactivez-le :
sudo systemctl enable apache2
La ligne Loaded dans la commande status affichera de nouveau ...; enabled; ....
L'astuce de pro :
Si vous voulez activer un service ET le démarrer en même temps, vous pouvez utiliser :sudo systemctl enable --now apache2
4. Mise en pratique récapitulative
Nettoyons notre environnement en désinstallant Apache.
# Arrêter le service avant de le supprimer
sudo systemctl stop apache2
# Désactiver le service pour qu'il ne tente pas de démarrer au boot
sudo systemctl disable apache2
# Supprimer le paquet et ses fichiers de configuration
sudo apt purge apache2 -y
# Nettoyer les dépendances qui ne sont plus nécessaires
sudo apt autoremove -y
Conclusion
Félicitations ! Vous savez maintenant comment piloter les services, qui sont les briques fondamentales de tout serveur Linux.
Points clés à retenir :
systemdest le gestionnaire de services, etsystemctlest la commande pour le contrôler.systemctl status <service>est votre meilleur ami pour diagnostiquer l'état d'un service.start,stop,restartgèrent l'état d'exécution immédiat du service.enable,disablegèrent si le service démarrera automatiquement au boot. Ces deux états sont indépendants !- On peut combiner les deux avec
enable --now.
Dans la prochaine leçon, nous allons nous intéresser à un service particulièrement important : le service SSH (sshd). Vous avez peut-être remarqué qu'il tournait sur votre système en utilisant systemctl. Ce service permet de se connecter à distance à un serveur et de l'administrer de n'importe où. C'est la porte d'entrée de tout administrateur système, et nous apprendrons à l'utiliser de manière sécurisée.