Les services systemd
Écrire et piloter une unité de service : ses trois sections, ExecStart, Type, Restart, User, After, Requires, Wants, WantedBy, systemctl, les états d'une unité et journalctl -u.
- 32 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Unité systemd : de quoi s'agit-il ?
Voir la réponse
Objet géré par systemd et décrit par un fichier de configuration : service, timer, socket, point de montage ou cible.
Le suffixe donne le type :
.service,.timer,.target. Les fichiers des paquets sont dans/usr/lib/systemd/system, ceux de l'administrateur dans/etc/systemd/system, qui l'emporte.Le serveur de cette unité plante avec le code de sortie 1. Que fait systemd ?
```ini
[Unit]
Description=Serveur app
After=network.target
[Service]
User=app
ExecStart=/opt/app/serveur
Restart=on-failure
[Install]
WantedBy=multi-user.target`- Il le relance, car une sortie en échec entre dans Restart=on-failure
- Il le laisse arrêté : seul Restart=always relance après une sortie en échec
- Il le relance au prochain amorçage seulement, à cause de WantedBy=
- Il arrête aussi network.target, dont le service dépend d'après After=
Voir la réponse
Il le relance, car une sortie en échec entre dans Restart=on-failure
on-failurecouvre une sortie avec un code non nul ou un signal.After=ne crée aucune dépendance, etWantedBy=ne sert qu'àenable.Un fichier d'unité de service a trois sections : … pour la description et les dépendances, … pour la commande lancée, … pour ce que fait enable.
Voir la réponse
Un fichier d'unité de service a trois sections : [Unit] pour la description et les dépendances, [Service] pour la commande lancée, [Install] pour ce que fait enable.
ExecStart=,User=,Type=etRestart=vont dans la section de la commande ;After=etRequires=dans la première ;WantedBy=dans la dernière.Type de service (Type=) : de quoi s'agit-il ?
Voir la réponse
Directive qui dit à systemd comment savoir que le service est démarré : simple (le processus lancé est le service), forking (le père quitte, le fils reste), oneshot (la commande se termine, et c'est tout).
Le défaut
simpleconvient à un programme qui reste au premier plan : systemd le supervise et envoie ses sorties au journal.forkingest pour les vieux démons qui se détachent seuls.systemctl status app montre « Main process exited, code=exited, status=203/EXEC ». Quelle est la cause probable, et la solution ?
- Le service manque de mémoire : relever la limite avec MemoryMax=
- Le compte indiqué par User= n'existe pas : le créer avec useradd
- Le chemin de ExecStart est faux ou le fichier n'est pas exécutable : vérifier avec ls -l, puis chmod +x ou corriger le chemin
- Le port d'écoute est pris par un autre processus : en choisir un autre
Voir la réponse
Le chemin de ExecStart est faux ou le fichier n'est pas exécutable : vérifier avec ls -l, puis chmod +x ou corriger le chemin
203/EXECsignale que systemd n'a pas pu exécuter la commande : chemin inexistant, droit d'exécution manquant ou interpréteur du script introuvable. Un compte inconnu donne217/USER.