systemd : bases et systemctl
systemd est le système d’initialisation d’Ubuntu : il démarre la machine, lance et surveille les services, collecte les journaux et planifie des tâches. Cette rubrique présente son usage en ligne de commande. Les exemples utilisent des noms génériques (monapp).
Versions
Section intitulée « Versions »| Ubuntu | systemd |
|---|---|
| 24.04 | 255 |
| 26.04 | 259 |
Les unités
Section intitulée « Les unités »Tout ce que gère systemd est une unité, décrite par un fichier texte :
| Type | Suffixe | Rôle |
|---|---|---|
| Service | .service |
Un programme à lancer et surveiller |
| Minuteur | .timer |
Déclenche une unité à une heure ou à intervalle (voir Timers) |
| Socket | .socket |
Écoute un port ou un fichier et lance un service à la demande (voir Dépendances, cibles et sockets) |
| Cible | .target |
Groupe d’unités représentant un état (multi-user.target) |
| Montage | .mount, .automount |
Système de fichiers monté |
| Chemin | .path |
Réagit à un changement de fichier |
| Tranche | .slice |
Groupe de ressources (cgroup) |
Où se trouvent les fichiers
Section intitulée « Où se trouvent les fichiers »| Emplacement | Rôle |
|---|---|
/usr/lib/systemd/system/ |
Unités fournies par les paquets : ne pas modifier |
/etc/systemd/system/ |
Unités de l’administrateur : prioritaires |
/etc/systemd/system/nom.service.d/*.conf |
Surcharges partielles (« drop-ins ») |
/run/systemd/system/ |
Unités temporaires (perdues au redémarrage) |
~/.config/systemd/user/ |
Unités d’un utilisateur (voir plus bas) |
Commandes essentielles : systemctl
Section intitulée « Commandes essentielles : systemctl »| Commande | Rôle |
|---|---|
systemctl status nom |
État détaillé et dernières lignes de journal |
sudo systemctl start nom |
Démarre |
sudo systemctl stop nom |
Arrête |
sudo systemctl restart nom |
Arrête puis redémarre |
sudo systemctl reload nom |
Recharge la configuration sans arrêter (si le service le gère) |
sudo systemctl enable nom |
Démarre automatiquement au boot |
sudo systemctl enable --now nom |
Active au boot et démarre maintenant |
sudo systemctl disable nom |
Retire du démarrage automatique |
systemctl is-active nom |
active, inactive, failed… |
systemctl is-enabled nom |
enabled, disabled, masked… |
sudo systemctl mask nom |
Interdit tout démarrage (lien vers /dev/null) |
sudo systemctl unmask nom |
Annule mask |
sudo systemctl daemon-reload |
Relit les fichiers d’unité après modification |
start et enable sont indépendants : enable agit au prochain démarrage, start tout de suite.
Lister et inspecter
Section intitulée « Lister et inspecter »systemctl list-units --type=service # services chargéssystemctl list-units --type=service --state=running # services en cours d'exécutionsystemctl list-unit-files --type=service # tous les services et leur état d'activationsystemctl --failed # unités en échecsystemctl cat nom # fichier d'unité et surchargessystemctl show nom -p MainPID,Restart,User # propriétés précisessystemctl list-dependencies nom # dépendancessystemctl list-timers # minuteurs actifssystemctl list-sockets # sockets en écouteLire l’état d’un service :
● monapp.service - Application monapp Loaded: loaded (/etc/systemd/system/monapp.service; enabled; preset: enabled) Active: active (running) since Mon 2026-10-05 16:00:00 UTC; 5min ago Main PID: 1234 (python3) CGroup: /system.slice/monapp.service └─1234 /usr/bin/python3 /srv/monapp/app/serveur.py| Champ | Signification |
|---|---|
Loaded: … enabled |
Fichier trouvé ; démarrage automatique actif |
Active: active (running) |
En fonctionnement |
Active: failed |
A échoué (voir le journal) |
Main PID |
Processus principal |
Modifier une unité sans toucher au fichier d’origine
Section intitulée « Modifier une unité sans toucher au fichier d’origine »sudo systemctl edit nom # ouvre un fichier de surcharge (drop-in) dans l'éditeursudo systemctl edit --full nom # copie l'unité entière dans /etc pour la modifiersudo systemctl revert nom # supprime les surcharges et revient à l'unité d'originesystemctl edit crée /etc/systemd/system/nom.service.d/override.conf et recharge systemd à l’enregistrement.
Services de l’utilisateur
Section intitulée « Services de l’utilisateur »Chaque utilisateur peut avoir ses propres services, sans sudo, dans ~/.config/systemd/user/ :
systemctl --user statussystemctl --user enable --now monservice.servicesystemctl --user daemon-reloadjournalctl --user -u monserviceloginctl enable-linger $USER # les services de l'utilisateur démarrent au boot, sans session ouverteSans enable-linger, les services utilisateur s’arrêtent à la fermeture de la dernière session.
Arrêt et redémarrage de la machine
Section intitulée « Arrêt et redémarrage de la machine »sudo systemctl reboot # redémarresudo systemctl poweroff # éteintsudo shutdown -r +10 "Maintenance" # redémarre dans 10 minutessudo shutdown -c # annulesystemctl is-system-running # running, degraded (au moins une unité en échec)…Cibles (états de la machine)
Section intitulée « Cibles (états de la machine) »systemctl get-default # cible par défaut (multi-user.target pour un serveur)sudo systemctl set-default multi-user.targetsudo systemctl isolate rescue.target # bascule vers le mode de secours (coupe les services)Voir Dépendances, cibles et sockets.
Bonnes habitudes
Section intitulée « Bonnes habitudes »- Modifier avec
systemctl editplutôt que dans/usr/lib. - Toujours
daemon-reloadaprès avoir modifié un fichier d’unité. - Vérifier avec
systemctl statuspuisjournalctl -u nom(voir Journal). - Un service critique :
Restart=on-failure(voir Écrire un service).
Dépannage rapide
Section intitulée « Dépannage rapide »| Symptôme | Piste |
|---|---|
Unit nom.service could not be found |
Mauvais nom ; systemctl list-unit-files | grep nom |
Warning: The unit file … changed on disk |
sudo systemctl daemon-reload |
Failed to enable unit: Unit file … is masked |
sudo systemctl unmask nom |
Le service est failed |
systemctl status nom puis journalctl -u nom -e (voir Dépannage) |
| Commandes sans effet après modification | Oubli de daemon-reload ou de restart |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Les commandes de ce guide sont identiques sur systemd 255 et 259.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuel :
man systemctl,man systemd.unit - Suite : Écrire un service