Commande Linux systemctl
Qu'est-ce que systemctl
systemctl est un outil en ligne de commande des systèmes Linux utilisé pour contrôler le système et le gestionnaire de services systemd. En tant que composant central des distributions Linux modernes, il remplace le système init et les commandes de service traditionnels.
Introduction à systemd
systemd est un gestionnaire de système et de services qui :
- S'exécute en tant que PID 1 (le premier processus à démarrer)
- Responsable du démarrage, de l'arrêt et de la gestion de tous les autres processus
- Fournit une capacité de démarrage parallèle, ce qui accélère considérablement le temps de démarrage du système
- Prend en charge le démarrage des services à la demande
- Fournit une fonctionnalité de collecte des journaux (via journald)
Syntaxe de base de systemctl
systemctl [选项] [命令] [单元名称]
Options courantes
| Option | Description |
|---|---|
| -t, --type | Spécifier le type d'unité (service, socket, device, etc.) |
| -a, --all | Afficher toutes les unités, y compris les unités inactives |
| --state | Filtrer les unités par état |
| -l, --full | Afficher les informations complètes sur l'unité |
| -H, --host | Opérer sur un hôte distant |
Commandes de gestion des services
Démarrer/Arrêter/Redémarrer les services
Exemple
# Démarrer le service
sudo systemctl start [nom du service]
# Arrêter le service
sudo systemctl stop [nom du service]
# Redémarrer le service
sudo systemctl restart [nom du service]
# Recharger la configuration (sans redémarrer le service)
sudo systemctl reload [nom du service]
sudo systemctl start [nom du service]
# Arrêter le service
sudo systemctl stop [nom du service]
# Redémarrer le service
sudo systemctl restart [nom du service]
# Recharger la configuration (sans redémarrer le service)
sudo systemctl reload [nom du service]
Afficher l'état du service
Exemple
# Afficher l'état d'un seul service
systemctl status [nom du service]
# Afficher tous les services en cours d'exécution
systemctl list-units --type=service --state=running
# Afficher les services défaillants
systemctl --failed
systemctl status [nom du service]
# Afficher tous les services en cours d'exécution
systemctl list-units --type=service --state=running
# Afficher les services défaillants
systemctl --failed
Activer/Désactiver les services
Exemple
# Activer le service (démarrage automatique au lancement du système)
sudo systemctl enable [nom du service]
# Désactiver le service (annuler le démarrage automatique au lancement du système)
sudo systemctl disable [nom du service]
# Vérifier si le service est activé
systemctl is-enabled [nom du service]
sudo systemctl enable [nom du service]
# Désactiver le service (annuler le démarrage automatique au lancement du système)
sudo systemctl disable [nom du service]
# Vérifier si le service est activé
systemctl is-enabled [nom du service]
Gestion des fichiers d'unité
Emplacements des fichiers d'unité
- Unités système :
/usr/lib/systemd/system/ - Unités personnalisées de l'administrateur :
/etc/systemd/system/
Opérations courantes sur les fichiers d'unité
Exemple
# Recharger tous les fichiers d'unité (nécessaire après modification de la configuration)
sudo systemctl daemon-reload
# Afficher le contenu du fichier d'unité
systemctl cat [nom de l'unité]
# Modifier le fichier d'unité (crée un fichier de substitution)
sudo systemctl edit [nom de l'unité] --full
sudo systemctl daemon-reload
# Afficher le contenu du fichier d'unité
systemctl cat [nom de l'unité]
# Modifier le fichier d'unité (crée un fichier de substitution)
sudo systemctl edit [nom de l'unité] --full
Gestion de l'état du système
Gestion de l'alimentation du système
Exemple
# Éteindre
sudo systemctl poweroff
# Redémarrer
sudo systemctl reboot
# Mettre en veille
sudo systemctl suspend
# Hiberner
sudo systemctl hibernate
sudo systemctl poweroff
# Redémarrer
sudo systemctl reboot
# Mettre en veille
sudo systemctl suspend
# Hiberner
sudo systemctl hibernate
Niveaux d'exécution du système
Exemple
# Obtenir la cible actuelle (niveau d'exécution)
systemctl get-default
# Définir la cible par défaut
sudo systemctl set-default [nom de la cible]
# Changer de cible (prend effet immédiatement)
sudo systemctl isolate [nom de la cible]
systemctl get-default
# Définir la cible par défaut
sudo systemctl set-default [nom de la cible]
# Changer de cible (prend effet immédiatement)
sudo systemctl isolate [nom de la cible]
Cibles courantes :
- graphical.target - mode interface graphique
- multi-user.target - mode texte multi-utilisateur
- rescue.target - mode de secours
- emergency.target - mode d'urgence
Exemples pratiques
Exemple 1 : Gestion du service Nginx
Exemple
# Démarrer Nginx
sudo systemctl start nginx
# Activer le lancement automatique au démarrage
sudo systemctl enable nginx
# Vérifier l'état
systemctl status nginx
# Tester la configuration puis recharger
sudo nginx -t # Tester d'abord la configuration
sudo systemctl reload nginx
sudo systemctl start nginx
# Activer le lancement automatique au démarrage
sudo systemctl enable nginx
# Vérifier l'état
systemctl status nginx
# Tester la configuration puis recharger
sudo nginx -t # Tester d'abord la configuration
sudo systemctl reload nginx
Exemple 2 : Création d'un service personnalisé
- Créer le fichier de service
/etc/systemd/system/myapp.service:
Exemple
[Unit]
Description=Mon application personnalisée
After=network.target
[Service]
ExecStart=/usr/bin/python3 /opt/myapp/app.py
WorkingDirectory=/opt/myapp
User=myappuser
Group=myappgroup
Restart=always
[Installer]
WantedBy=multi-user.target
Description=Mon application personnalisée
After=network.target
[Service]
ExecStart=/usr/bin/python3 /opt/myapp/app.py
WorkingDirectory=/opt/myapp
User=myappuser
Group=myappgroup
Restart=always
[Installer]
WantedBy=multi-user.target
- Activer et démarrer le service :
Exemple
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl start myapp
Dépannage des problèmes courants
Échec du démarrage du service
Afficher les journaux détaillés :
journalctl -u [服务名] -xe
Vérifier les dépendances :
systemctl list-dependencies [服务名]
Lancer en mode débogage :
systemctl status [服务名] -l --no-pager
Analyse des performances
Exemple
# Afficher le temps de démarrage du système
systemd-analyze
# Afficher le temps de démarrage de chaque service
systemd-analyze blame
# Générer un diagramme de démarrage (nécessite une interface graphique)
systemd-analyze plot > boot.svg
systemd-analyze
# Afficher le temps de démarrage de chaque service
systemd-analyze blame
# Générer un diagramme de démarrage (nécessite une interface graphique)
systemd-analyze plot > boot.svg
Référence des commandes Linux