
Systemd est une suite de composants essentiels pour un système Linux. Il fournit un gestionnaire de système et de services qui s'exécute avec l'identifiant de processus 1 (PID 1) et lance le reste du système.
Systemd offre des capacités de parallélisation avancées, utilise l'activation par socket et D-Bus pour le démarrage des services, permet le démarrage à la demande des démons, gère les processus à l'aide des groupes de contrôle Linux, maintient les points de montage et de montage automatique, et implémente une logique de contrôle de service transactionnelle et basée sur les dépendances. systemd prend en charge les scripts d'initialisation SysV et LSB et remplace sysvinit.
Parmi ses autres composants figurent un démon de journalisation, des utilitaires pour la configuration système de base (nom d'hôte, date, paramètres régionaux), la gestion des utilisateurs connectés, des conteneurs et machines virtuelles en cours d'exécution, les comptes système, les répertoires et paramètres d'exécution, ainsi que des démons pour la configuration réseau simple, la synchronisation de l'heure réseau, le transfert des journaux et la résolution de noms.
systemctl peut être utilisé pour examiner et contrôler l'état du système « systemd » et du gestionnaire de services.
Afficher les services actuellement en mémoire. Par défaut, seuls les services actifs, ceux ayant des tâches en attente ou ceux ayant échoué sont affichées ; ce comportement peut être modifié avec l’option --all
systemctl list-units
Afficher l'état d'activation au démarrage de toutes les unités systemd
systemctl list-unit-files
Lister les sockets actuellement en mémoire, triés par adresse d'écoute.
systemctl list-sockets
Vérifier qu'un service est actif
systemctl is-active # nom du service
Vérifier qu'un service est activé au démarrage du système
systemctl is-enabled # nom du service
Afficher la configuation d'un service
systemctl cat # nom du service
Afficher tous les services en échec
systemctl --failed
| option | effet |
|---|---|
| start | Démarrer |
| stop | Arrêter |
| restart | Redémarrer |
| reload | Recharger la configuration |
| status | Afficher le statut |
| enable | Activer au démarrage |
| disable | Désactiver au démarrage |
| daemon-reload | Recharger la configuration |
| mask | Masquer |
| unmask | Démasquer |
Afficher la target par défaut utilisée par systemd
systemctl get-default
Afficher toutes les targets actuellement chargées
systemctl list-units --type target
Configurer systemd de manière à utiliser une unité de cible différente par défaut
systemctl set-default # nom.target
Passer à une target différente dans la session actuelle
systemctl isolate # nom.target
Les services gérés par systemd doivent être placés dans /etc/systemd/system/ et avoir pour extension .service
Prérequis: un dossier contenant une page web html, ici:
mkdir /srv/labweb
echo "<h1>Hello World</h1>" > /srv/labweb/index.html
nano /etc/systemd/system/labweb.service
[Unit]
Description=Serveur web python
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python -m http.server -d /srv/labweb
[Install]
WantedBy=multi-user.target
Explications:
[Unit] → contient des options génériques Description → Description significative de l'unitéAfter → L'unité est lancée uniquement après l'activation des unités spécifiées[Service] → directives spécifiques au type de serviceType → Configure le type de démarrageExecStart → Spécifie les commandes ou scripts à exécuter [Install] → contient des informations sur l'installation de l'unité utilisée par les commandes systemctl enable et disableWantedBy → Une liste des unités qui dépendent de l'unitéLe processus principal du service exécute la commande /usr/bin/python -m http.server -d /srv/labweb qui sera lancé après la cible network dans la cible multi-user
systemctl daemon-reload
systemctl start labweb.service
systemctl status labweb.service
● labweb.service - Serveur web python
Loaded: loaded (/etc/systemd/system/labweb.service; disabled; preset: disabled)
Active: active (running) since Thu 2025-12-04 17:03:12 CET; 6s ago
Invocation: 6a9173caec7a47fb8fee36edfd5911c2
Main PID: 3210 (python)
Tasks: 1 (limit: 10680)
Memory: 9.7M (peak: 9.9M)
CPU: 42ms
CGroup: /system.slice/labweb.service
└─3210 /usr/bin/python -m http.server -d /srv/labweb
déc. 04 17:03:12 rhel-srv systemd[1]: Started labweb.service - Serveur web python
Le service Serveur web python est bien au statut active (running)
systemctl enable labweb.service
Created symlink '/etc/systemd/system/multi-user.target.wants/labweb.service' → '/etc/systemd/system/labweb.service'.
Un lien symbolique a été créé dans le sous-dossier multi-user.target.wants afin que le service soit démarrer dans cette cible
systemctl is-active labweb.service
active
La journalisation de systemd est indépendante et gérée par un service nommé systemd-journald
journalctl est l'unique commande pour consulter les journaux de systemd, elle peut s'utiliser avec de nombreuses options
| option | affichage |
|---|---|
| -n _x_ | les _x_ dernières entrées |
| -f | en temps réel |
| -k | les journaux du kernel |
| -p _priorité_ | filtre par priorité |
| _UID=_x_ | filtre par utilisateur selon l'uid |
| _PID=_x_ | filtre par processus selon le pid |
| --since _x_ | après le moment défini |
| --until _x_ | avant le moment défini |
| -u _x_ | filtre par nom de service |
| -x | explications |
| -e | immédiatement la fin du journal |
| -b | informations sur le dernier démarrage |
journalctl -xu sshd
Affiche les journaux du service sshd.service avec des explications
déc. 04 09:03:34 rhel-srv systemd[1]: Starting sshd.service - OpenSSH server daemon...
░░ Subject: L'unité (unit) sshd.service a commencé à démarrer
░░ Defined-By: systemd
░░ Support: https://access.redhat.com/support
░░
░░ L'unité (unit) sshd.service a commencé à démarrer.
déc. 04 09:03:34 rhel-srv (sshd)[1001]: sshd.service: Referenced but unset environment variable evaluates to an empty string: OPTIONS
déc. 04 09:03:34 rhel-srv sshd[1001]: Server listening on 0.0.0.0 port 22.
déc. 04 09:03:34 rhel-srv sshd[1001]: Server listening on :: port 22.
déc. 04 09:03:34 rhel-srv systemd[1]: Started sshd.service - OpenSSH server daemon.
░░ Subject: L'unité (unit) sshd.service a terminé son démarrage
░░ Defined-By: systemd
░░ Support: https://access.redhat.com/support
░░
░░ L'unité (unit) sshd.service a terminé son démarrage, avec le résultat done.
déc. 04 09:05:52 rhel-srv sshd-session[1739]: Accepted publickey for root from 192.168.10.31 port 46514 ssh2: ED25519 SHA256:YMiLkLhAkZrrZtV>
déc. 04 09:05:52 rhel-srv sshd-session[1739]: pam_unix(sshd:session): session opened for user root(uid=0) by root(uid=0)
déc. 04 09:16:09 rhel-srv sshd-session[1841]: Accepted publickey for root from 192.168.10.31 port 45884 ssh2: ED25519 SHA256:YMiLkLhAkZrrZtV>
déc. 04 09:16:09 rhel-srv sshd-session[1841]: pam_unix(sshd:session): session opened for user root(uid=0) by root(uid=0)
journalctl -b -p err
Affiche uniquement les évenements de type error dans les journaux du dernier démarrage
déc. 04 09:03:34 rhel-srv firewalld[857]: ERROR: INVALID_ZONE: labzone
journalctl -ke
Affiche directement les derniers messages des journaux du kernel
déc. 04 09:03:34 rhel-srv kernel: br-ethlab: port 1(ens19) entered blocking state
déc. 04 09:03:34 rhel-srv kernel: br-ethlab: port 1(ens19) entered disabled state
déc. 04 09:03:34 rhel-srv kernel: virtio_net virtio3 ens19: entered allmulticast mode
déc. 04 09:03:34 rhel-srv kernel: virtio_net virtio3 ens19: entered promiscuous mode
déc. 04 09:03:34 rhel-srv kernel: br-ethlab: port 1(ens19) entered blocking state
déc. 04 09:03:34 rhel-srv kernel: br-ethlab: port 1(ens19) entered listening state
déc. 04 09:03:41 rhel-srv kernel: block dm-0: the capability attribute has been deprecated.
déc. 04 09:04:27 rhel-srv kernel: br-ethlab: port 1(ens19) entered learning state
déc. 04 09:04:42 rhel-srv kernel: br-ethlab: port 1(ens19) entered forwarding state
déc. 04 09:04:42 rhel-srv kernel: br-ethlab: topology change detected, propagating
Sources principales:
man systemctlman journalctl