15%

É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
31.10.2024

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 à l’aide de 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 à l’aide de 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 clés 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 si nécessaire, é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 Socket et D-Bus — Permet des modèles avancés de communication inter-processus

Comprendre systemd n’est pas qu’académique — cela impacte directement 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 du service et afficher les journaux
  • Gérer les cibles système (niveaux d’exécution)
  • Recharger la configuration du démon 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 à utiliser quand :

  • Vous avez apporté des modifications de configuration qui nécessitent un redémarrage complet du processus
  • Un service s’est écrasé 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 si supporté pour éviter les temps d’arrêt.

2. Rechargement d’un service

Le rechargement ordonne à un service en cours d’exécution de relire ses fichiers de configuration sans arrêter le processus. C’est idéal pour appliquer les modifications de configuration sans aucun 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 professionnel — 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

L’arrêt d’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 : L’arrêt d’un service critique (comme sshd sur un serveur distant) peut vous verrouiller hors de 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

L’activation d’un service crée les symlinks 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

La désactivation d’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 de l’état du 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 l’état 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 des 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érification si un service est actif ou activé

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

# 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

Liste de 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

Rechargement du démon systemd

Après la création ou la modification de fichiers d’unité, vous devez recharger le démon systemd pour reconnaître les modifications :

sudo systemctl daemon-reload

Masquage et démasquage d’un service

Le masquage d’un service l’empêche d’être démarré manuellement ou automatiquement — 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 des commandes 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 l’état 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 démarrage
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 ayant échoué
systemctl daemon-reloadRecharger les fichiers d’unité systemd
systemctl mask <service>Empêcher complètement le démarrage du service
systemctl unmask <service>Retirer 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 écrasé 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 déploiement

Après le déploiement d’une nouvelle application avec un fichier d’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’usage
stopOuiOuiMaintenance, dépannage
restartOui, puis redémarréBrefModifications de configuration nécessitant un redémarrage complet
15%

É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