CodeGym /Cours /Docker SELF /Notions de base sur la gestion des services : commandes s...

Notions de base sur la gestion des services : commandes systemctl (démarrer, arrêter, redémarrer les services)

Docker SELF
Niveau 3 , Leçon 0
Disponible

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

  1. Démarrage d’un service : lancer un service s'il est désactivé.
  2. Arrêt d’un service : arrêter un service en cours d'exécution.
  3. Redémarrage d’un service : arrêter puis relancer un service.
  4. 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.

  1. Démarrez le service cron :

    sudo systemctl start cron
    
  2. Vérifiez s'il fonctionne :

    sudo systemctl status cron
    

    Assurez-vous que le statut est "active (running)".

  3. Arrêtez le service cron :

    sudo systemctl stop cron
    

    Vérifiez que le statut est passé à "inactive (dead)".

  4. 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 :

  1. Active (running) — le service fonctionne activement ; tout va bien.
  2. Inactive (dead) — le service est arrêté.
  3. 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é !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION