Atelier - Gestion des services en shell Bash
Sur les OS GNU/Linux, les services sont des programmes qui tournent en arrière-plan et assurent des fonctions essentielles du système : réseau, horloge, serveur web, etc. Savoir les gérer en ligne de commande est une compétence de base pour tout administrateur système.
1. Prérequis
- Un ordinateur ou une machine virtuelle tournant sous GNU/Linux (Debian, Ubuntu ou équivalent)
- Un terminal Bash
- Les droits sudo pour certaines opérations avancées
DISCLAIMER
Les expérimentations pratiques ont été réalisées sur une machine virtuelle Ubuntu 24.04 LTS, sur un système en français, avec un clavier Français AZERTY.
Cette VM est hébergée sur VirtualBox, tournant sur un système hôte Ubuntu 2404 LTS.
Elles peuvent être reproduites avec une autre configuration (autre version de Linux, autre hyperviseur, autre OS hôte), mais des différences peuvent alors apparaître et tu devras peut-être adapter les actions à effectuer.
2. Qu’est-ce qu’un service ?
Un service (aussi appelé daemon sous Linux) est un programme qui :
- Démarre automatiquement au lancement du système,
- Tourne en arrière-plan en permanence,
- Ne nécessite pas d’intervention de l’utilisateur pour fonctionner.
Exemples de services courants :
ssh: permet les connexions à distance sécuriséescron: planifie l’exécution automatique de tâchesnetworking: gère les interfaces réseau
Sous les distributions Linux modernes (Ubuntu, Debian), les services sont gérés par systemd, via la commande systemctl.
3. Affichage des services
Pour la suite, ouvre un terminal Bash.
a. Lister tous les services
La commande ci-dessous affiche l’ensemble des services du système :
systemctl list-units --type=service
Tu obtiens un tableau avec plusieurs colonnes :
- UNIT : le nom du service
- LOAD : indique si le service est bien chargé par systemd
- ACTIVE : état général (
activeouinactive) - SUB : état détaillé (
running,exited,dead) - DESCRIPTION : description courte du service
Pour naviguer dans la liste, utilise les flèches du clavier.
Pour quitter, appuie sur q.
b. Afficher uniquement les services actifs
Pour filtrer uniquement les services en cours d’exécution :
systemctl list-units --type=service --state=running
c. Connaître l’état d’un service précis
Pour voir le statut détaillé d’un service en particulier, par exemple ssh.
Si ssh n’est pas installé, fais-le avec sudo apt install openssh-server.
systemctl status ssh
Tu obtiens des informations importantes :
- Si le service est actif ou arrêté
- Son PID (identifiant de processus)
- Les dernières lignes de son journal (logs)
Note : Sur certaines distributions, le service SSH s’appelle
sshdau lieu dessh. Si la commande renvoie une erreur, essaiesystemctl status sshd.
4. Démarrage et arrêt d’un service
Pour les manipulations qui suivent, nous allons utiliser le service ssh comme exemple. C’est un service sûr à manipuler en atelier.
a. Arrêter un service
Pour arrêter le service ssh :
sudo systemctl stop ssh
Vérifie ensuite que le service est bien arrêté :
systemctl status ssh
La ligne Active doit maintenant afficher inactive (dead).
b. Démarrer un service
Pour redémarrer le service ssh :
sudo systemctl start ssh
Vérifie de nouveau l’état du service. La ligne Active doit afficher active (running).
Comprends-tu la différence entre stop et start ?
stopinterrompt immédiatement le service. Les connexions en cours sont coupées.startlance le service. Il sera prêt à accepter de nouvelles connexions.
c. Redémarrer un service
Lorsqu’on modifie la configuration d’un service, il faut le redémarrer pour que les changements soient pris en compte :
sudo systemctl restart ssh
Il existe aussi reload, qui recharge la configuration sans couper le service (quand le service le supporte) :
sudo systemctl reload ssh
5. Activation au démarrage
Un service peut être démarré manuellement, mais il peut aussi être configuré pour se lancer automatiquement à chaque démarrage de la machine.
a. Activer un service au démarrage
sudo systemctl enable ssh
b. Désactiver un service au démarrage
sudo systemctl disable ssh
c. Vérifier si un service est activé
systemctl is-enabled ssh
La commande retourne enabled ou disabled.
Comprends-tu la différence entre un service actif et un service activé ?
- Un service actif (
active) est en cours d’exécution maintenant. - Un service activé (
enabled) se lancera automatiquement au prochain démarrage. - Ces deux états sont indépendants : un service peut être actif sans être activé (et inversement).
Une fois arrivé au bout de cet atelier, tu sais gérer le cycle de vie des services sous Linux avec systemctl.