Aperçu
systemd joue un rôle central dans la gestion efficace du processus de démarrage du système, la supervision des services en cours d'exécution et le contrôle des différents états du système. Contrairement à init qui exécute les scripts séquentiellement, systemd traite les services en parallèle sur la base des dépendances, améliorant considérablement la vitesse de démarrage. C'est un facteur important qui contribue à la performance et à la stabilité des systèmes Linux modernes.
Principales caractéristiques
Les principales caractéristiques de systemd sont les suivantes :
- Démarrage parallèle: Analyse les dépendances des services et exécute plusieurs services simultanément, réduisant ainsi le temps de démarrage.
- Gestion intégrée: Gère divers éléments tels que le démarrage du système, les services, les périphériques et les journaux dans un cadre unique.
- Surveillance des services: Aide à un fonctionnement stable en redémarrant automatiquement les services en cas d'échec.
- Remplacement des niveaux d'exécution: Introduit le concept de 'cible' (target) au lieu des niveaux d'exécution (runlevel) pour contrôler l'état du système.
Relation avec init
systemd est le successeur et le remplaçant du système init traditionnel. Il hérite du rôle de démarrage et d'arrêt du système qu'init effectuait, et ajoute de meilleures fonctionnalités.
- init: Le premier processus à s'exécuter, il référençait le fichier `/etc/inittab` au démarrage et exécutait séquentiellement les scripts en fonction du niveau d'exécution.
- systemd: Également le processus PID 1, mais il utilise des 'cibles' au lieu des niveaux d'exécution, et traite les services en parallèle sur la base des dépendances, ce qui le rend plus rapide et plus flexible.
- Compatibilité: Dans la plupart des systèmes Linux modernes, init est lié symboliquement à systemd, de sorte que même si vous utilisez la commande init, systemd agira à la place.
Concepts clés
Concepts essentiels pour comprendre systemd.
Unité (Unit)
Tous les objets gérés par systemd (services, points de montage, périphériques, etc.) sont définis comme des 'unités'. Chaque unité possède un fichier de configuration spécifique (`*.service`, `*.mount`, etc.) qui définit une tâche particulière.
- Service Unit: Gère les processus en arrière-plan tels que les serveurs web (nginx.service) ou les bases de données (mysql.service).
- Target Unit: Sert à regrouper plusieurs unités. C'est un concept qui remplace les niveaux d'exécution ; 'multi-user.target' signifie le mode multi-utilisateur, et 'graphical.target' signifie le mode graphique.
- Mount Unit: Gère les points de montage du système de fichiers.
systemctl
L'utilitaire de ligne de commande principal pour contrôler systemd. Il est utilisé pour démarrer, arrêter, redémarrer les services ou vérifier l'état des unités.
- Démarrer un service: sudo systemctl start nginx
- Vérifier l'état d'un service: sudo systemctl status nginx
- Redémarrer le système: sudo systemctl reboot
journalctl
Commande pour afficher les journaux système gérés de manière intégrée par systemd. Les journaux peuvent être filtrés par service, par heure ou par priorité.
- Voir tous les journaux: journalctl
- Voir les journaux d'un service spécifique: journalctl -u nginx.service
- Voir les journaux en temps réel: journalctl -f
Exemples d'utilisation
Exemples d'utilisation des commandes essentielles de systemd : systemctl et journalctl.
Vérifier la cible de démarrage du système
systemctl get-default
Vérifie la cible avec laquelle le système a démarré.
Arrêt du système
sudo systemctl poweroff
Arrête le système en toute sécurité via systemd. Exécute la même fonction que la commande poweroff.
Activer/Désactiver un service spécifique
sudo systemctl enable nginx
sudo systemctl disable nginx
Configure un service spécifique pour qu'il démarre automatiquement au démarrage du système ou le désactive.
Redémarrer un service
sudo systemctl restart nginx
Redémarre le service de serveur web en cours d'exécution. Utile lors de la modification des fichiers de configuration.
Conseils & Précautions
Informations utiles lors de l'utilisation de systemd.
Conseils
- Les fichiers d'unité de systemd se trouvent généralement dans les répertoires `/etc/systemd/system/` ou `/lib/systemd/system/`.
- systemd gère de manière intégrée la plupart des commandes liées au démarrage/arrêt. Par conséquent, `halt`, `reboot`, `poweroff`, etc., sont souvent des liens symboliques vers `systemctl`.
- La commande `systemctl status` permet de vérifier l'état du service ainsi que les journaux récents en une seule fois.