Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
Linux

Commandes Systemctl : Comment redémarrer, recharger et arrêter les services dans Linux

La gestion efficace des services est l’une des compétences les plus critiques pour tout administrateur système Linux. Que vous exécutiez un serveur web à fort trafic sur un plan VPS Hosting ou que vous mainteniez un environnement Dedicated Server, comprendre comment contrôler les services système en utilisant systemctl est absolument essentiel. Ce guide complet couvre tout ce que vous devez savoir sur le redémarrage, le rechargement et l’arrêt des services dans Linux en utilisant systemd et systemctl.

Qu’est-ce que systemd et pourquoi est-ce important ?

systemd est le système init par défaut et le gestionnaire de services utilisé dans pratiquement toutes les distributions Linux modernes, notamment Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux et Fedora. Il a remplacé les anciens systèmes init comme SysVinit et Upstart, apportant des améliorations significatives à la façon dont Linux démarre et gère les processus.

Caractéristiques principales de systemd

  • Démarrage parallèle des services — Réduit considérablement les temps de démarrage en lançant les services simultanément
  • Activation des services à la demande — Les services peuvent être lancés uniquement lorsqu’ils sont nécessaires, économisant les ressources système
  • Gestion des dépendances — Gère automatiquement les dépendances et l’ordre des services
  • Journalisation centralisée — S’intègre avec journald pour une gestion des journaux unifiée et structurée
  • Contrôle des ressources basé sur Cgroup — Suit et limite l’utilisation du CPU, de la mémoire et des E/S par service
  • Activation par socket et D-Bus — Permet des modèles avancés de communication inter-processus

Comprendre systemd n’est pas qu’une question académique — cela a un impact direct sur la stabilité, les performances et la sécurité de votre environnement Linux.

Qu’est-ce que systemctl ?

systemctl est l’interface de ligne de commande principale pour interagir avec systemd. Il permet aux administrateurs de :

  • Démarrer, arrêter, redémarrer et recharger les services
  • Activer ou désactiver les services au démarrage
  • Vérifier l’état des services et afficher les journaux
  • Gérer les cibles système (niveaux d’exécution)
  • Recharger la configuration du daemon systemd

Toutes les commandes systemctl qui modifient l’état du système nécessitent des privilèges root ou un accès sudo.

Commandes systemctl principales pour la gestion des services

1. Redémarrage d’un service

Redémarrer un service l’arrête complètement puis le relance. C’est l’opération à privilégier quand :

  • Vous avez apporté des modifications de configuration qui nécessitent un redémarrage complet du processus
  • Un service s’est arrêté ou est devenu non réactif
  • Vous devez appliquer des fichiers binaires mis à jour après une mise à niveau de paquet

Syntaxe :

sudo systemctl restart <service_name>

Exemple — Redémarrer le serveur web Nginx :

sudo systemctl restart nginx

Exemple — Redémarrer le serveur web Apache :

sudo systemctl restart apache2

Exemple — Redémarrer la base de données MySQL/MariaDB :

sudo systemctl restart mysql

> Important : Redémarrer un service provoque une brève interruption. Pour les environnements de production, envisagez d’utiliser reload quand c’est possible pour éviter les temps d’arrêt.

2. Rechargement d’un service

Recharger demande à un service en cours d’exécution de relire ses fichiers de configuration sans arrêter le processus. C’est idéal pour appliquer des modifications de configuration sans temps d’arrêt.

Syntaxe :

sudo systemctl reload <service_name>

Exemple — Recharger Nginx après modification de sa configuration :

sudo systemctl reload nginx

Exemple — Recharger le démon SSH après modification de sshd_config :

sudo systemctl reload sshd

> Remarque : Tous les services ne supportent pas l’opération reload. Si un service ne l’implémente pas, systemctl retournera une erreur. Dans ces cas, utilisez restart à la place.

Conseil pratique — Utilisez reload-or-restart pour une compatibilité maximale :

sudo systemctl reload-or-restart <service_name>

Cette commande tente d’abord un rechargement. Si le service ne supporte pas le rechargement, elle bascule automatiquement vers un redémarrage complet — ce qui en fait l’option la plus sûre pour les déploiements scriptés et l’automatisation.

3. Arrêt d’un service

Arrêter un service le termine immédiatement. Utilisez ceci quand vous devez mettre un service hors ligne pour la maintenance, le dépannage ou la reconfiguration.

Syntaxe :

sudo systemctl stop <service_name>

Exemple — Arrêter le serveur web Nginx :

sudo systemctl stop nginx

Exemple — Arrêter le service de pare-feu :

sudo systemctl stop ufw

> Avertissement : Arrêter un service critique (tel que sshd sur un serveur distant) peut vous bloquer l’accès à votre système. Assurez-vous toujours d’avoir une méthode d’accès alternative, comme une console ou une gestion hors bande, avant d’arrêter les services essentiels.

4. Démarrage d’un service

Si un service n’est pas actuellement en cours d’exécution, utilisez la commande start pour le lancer.

Syntaxe :

sudo systemctl start <service_name>

Exemple :

sudo systemctl start nginx

5. Activation d’un service au démarrage

Activer un service crée les liens symboliques nécessaires pour que systemd le démarre automatiquement lors du démarrage du système.

Syntaxe :

sudo systemctl enable <service_name>

Exemple :

sudo systemctl enable nginx

Activer et démarrer simultanément (recommandé) :

sudo systemctl enable --now nginx

6. Désactivation d’un service au démarrage

Désactiver un service l’empêche de démarrer automatiquement, mais ne l’arrête pas s’il est actuellement en cours d’exécution.

Syntaxe :

sudo systemctl disable <service_name>

Exemple :

sudo systemctl disable bluetooth

Désactiver et arrêter simultanément :

sudo systemctl disable --now bluetooth

7. Vérification du statut d’un service

La commande status est l’une des commandes systemctl les plus fréquemment utilisées. Elle fournit un aperçu en temps réel de l’état d’un service, y compris les entrées de journal récentes.

Syntaxe :

sudo systemctl status <service_name>

Exemple — Vérifier le statut de Nginx :

sudo systemctl status nginx

Exemple de sortie :

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-01-15 10:23:45 UTC; 2h 34min ago
       Docs: man:nginx(8)
    Process: 1234 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 1235 (nginx)
      Tasks: 3 (limit: 4915)
     Memory: 6.2M
        CPU: 45ms
     CGroup: /system.slice/nginx.service
             ├─1235 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─1236 "nginx: worker process"

La sortie inclut :

  • Loaded — Si le fichier d’unité est chargé et s’il est activé au démarrage
  • Active — État d’exécution actuel (active (running), inactive (dead), failed, etc.)
  • Main PID — L’ID de processus principal du service
  • Memory/CPU — Métriques de consommation de ressources
  • CGroup — La hiérarchie du groupe de contrôle
  • Recent logs — Dernières entrées du journal pour un diagnostic rapide

Commandes systemctl avancées

Vérifier si un service est actif ou activé

Pour une utilisation dans les scripts et l’automatisation, ces commandes retournent des codes de sortie simples de type booléen :

# Check if a service is currently running
systemctl is-active nginx

# Check if a service is enabled at boot
systemctl is-enabled nginx

# Check if a service has failed
systemctl is-failed nginx

Lister tous les services

# List all loaded and active units
systemctl list-units --type=service

# List all installed unit files and their states
systemctl list-unit-files --type=service

# List only failed services
systemctl --failed

Recharger le daemon systemd

Après avoir créé ou modifié des fichiers d’unité, vous devez recharger le daemon systemd pour reconnaître les modifications :

sudo systemctl daemon-reload

Masquer et démasquer un service

Masquer un service empêche son démarrage manuel ou automatique — même par d’autres services :

# Prevent a service from ever starting
sudo systemctl mask <service_name>

# Re-enable a masked service
sudo systemctl unmask <service_name>

Référence rapide : Aide-mémoire de la commande systemctl

CommandeDescription
systemctl start <service>Démarrer un service arrêté
systemctl stop <service>Arrêter un service en cours d’exécution
systemctl restart <service>Arrêter et redémarrer un service
systemctl reload <service>Recharger la configuration sans arrêter
systemctl reload-or-restart <service>Recharger si supporté, sinon redémarrer
systemctl enable <service>Activer le service au démarrage
systemctl disable <service>Désactiver le service au démarrage
systemctl enable --now <service>Activer et démarrer immédiatement
systemctl disable --now <service>Désactiver et arrêter immédiatement
systemctl status <service>Afficher le statut du service et les journaux
systemctl is-active <service>Vérifier si le service est en cours d’exécution
systemctl is-enabled <service>Vérifier si le service démarre au boot
systemctl is-failed <service>Vérifier si le service a échoué
systemctl list-units --type=serviceLister tous les services actifs
systemctl --failedLister tous les services échoués
systemctl daemon-reloadRecharger les fichiers d’unité systemd
systemctl mask <service>Empêcher complètement le démarrage du service
systemctl unmask <service>Supprimer le masque du service

Cas d’usage pratiques pour les administrateurs de serveurs

Scénario 1 : Application des modifications de configuration Nginx

Vous avez modifié /etc/nginx/nginx.conf sur votre serveur web. Pour appliquer les modifications sans interrompre les connexions actives :

# First, test the configuration syntax
sudo nginx -t

# If the test passes, reload gracefully
sudo systemctl reload nginx

Scénario 2 : Récupération d’un service défaillant

Un service s’est arrêté et affiche un état failed :

# Check what went wrong
sudo systemctl status myapp.service

# View full logs for the service
sudo journalctl -u myapp.service -n 50 --no-pager

# Restart the service
sudo systemctl restart myapp.service

Scénario 3 : Configuration d’un nouveau service après le déploiement

Après le déploiement d’une nouvelle application avec un fichier unit personnalisé :

# Reload systemd to recognize the new unit file
sudo systemctl daemon-reload

# Enable and start the service in one command
sudo systemctl enable --now myapp.service

# Verify it's running correctly
sudo systemctl status myapp.service

Différence entre restart, reload et stop — En un coup d’œil

ActionProcessus arrêté ?Temps d’arrêt ?Cas d’utilisation
stopOuiOuiMaintenance, dépannage
restartOui, puis redémarréBrefModifications de configuration nécessitant un redémarrage complet
reloadNonAucunModifications de configuration sans temps d’arrêt
reload-or-restartSeulement si nécessaireMinimalAutomatisation et scripts sécurisés

Gestion des services dans différents environnements d’hébergement

Les commandes systemctl couvertes dans ce guide s’appliquent universellement dans les environnements d’hébergement basés sur Linux. Que vous gériez des services sur un VPS avec cPanel ou un serveur dédié bare-metal, systemd fournit une interface cohérente et fiable pour la gestion des services.

Pour les équipes exécutant des applications web, il est tout aussi important de sécuriser vos services avec un chiffrement SSL/TLS approprié. AlexHost propose des certificats SSL pour vous aider à protéger vos services web et à renforcer la confiance des utilisateurs — et une fois votre certificat installé, un simple sudo systemctl reload nginx ou sudo systemctl reload apache2 suffit pour appliquer la nouvelle configuration sans temps d’arrêt.

Si vous construisez un nouveau projet et avez besoin d’une base fiable, envisagez de commencer par un hébergement web partagé pour les charges de travail plus petites, puis d’évoluer vers un VPS complet ou un serveur dédié à mesure que vos besoins augmentent.

Conclusion

Maîtriser les commandes systemctl est une exigence fondamentale pour quiconque gère des serveurs Linux en production. La capacité à redémarrer, recharger et arrêter les services efficacement — et à comprendre la différence entre ces opérations — a un impact direct sur la disponibilité, les performances et la maintenabilité de votre système.

Voici un résumé rapide des points clés à retenir :

  • Utilisez restart quand vous avez besoin d’un cycle de service complet — arrête et démarre le processus à zéro
  • Utilisez reload pour les mises à jour de configuration sans interruption de service quand le service le supporte
  • Utilisez reload-or-restart dans les scripts pour une compatibilité et une sécurité maximales
  • Utilisez stop pour la maintenance planifiée ou quand un service doit être mis hors ligne
  • Utilisez toujours systemctl status et journalctl pour diagnostiquer les problèmes avant et après les modifications

Avec ces commandes dans votre arsenal, vous serez bien équipé pour maintenir des environnements Linux stables et performants — que vous gériez un seul VPS ou une flotte entière de serveurs dédiés.