SystemD, les services systèmes de Linux
SystemD successeur de System V puis Upstart, fourni un système/service manager qui est lancé avec le PID 1
et démarre le reste du système, mais fourni également un nombre impressionnant d’outils.
Systemctl
Pour gérer les services (start
, stop
, restart
, status
) sur un système Linux disposant de SystemD, nous pouvons utiliser la commande systemctl
(anciennement service
).
Ces services sont créés/paramétrés via des fichiers de configuration se trouvant dans /etc/systemd/system/
et il est possible de créer simplement soi-même des services pour lancer par ex une application web au démarrage du système.
systemctl enable monservice.service
: active (enable
) ou désactive (disable
) le service pour un démarrage auto au boot de la machine.
Il existe ensuite un ensemble de paramètres permettant d’interagir interactivement avec nos services.
systemctl status
: donne sous forme d’arborescence la liste des services démarrés, et l’état global (running : tout va bien, degraded : un ou pls services sont en carafe)
systemctl status nom-du-service
: donne l’état du service et ses options/infos de démarrage (il est possible d’omettre l’extension .service dans le nom du service)
systemctl list-unit-files
: liste l’ensemble des services installés et leurs status (static | enabled | disabled | masked)
systemctl list-units --failed
: liste les services en échec
systemctl -p LogLevel show
: affiche le LogLevel de systemD, info par défaut (qui peut polluer les logs rsyslog)
systemd-analyze set-log-level notice
: permet de modifier le LogLevel de systemD temporairement (jusqu’au prochain reboot)
systemctl daemon-reexec
: redémarrage du service systemctl (sans rebooter)
systemctl daemon-reload
: après avoir modifié un fichier *.service de définition de service (/etc/systemd/system/) il faut recharger systemctl avec cette commande avant de pourvoir ré-interagir avec
Journalctl
Les services gérés par SystemD ont leurs logs accessible par défaut (souvent paramétrable) via la commande journalctl
utile pour voir les logs des services en échec (option -f
pour follow)
Pour lister les entrées du journal d’aujourd’hui spécifique au service spécifié par l’option -u
journalctl -u nginx.service # filtrer par nom de service journalctl -f # follow journalctl -n 50 # nombre de lignes journalctl --since today journalctl --since "3 hours ago" journalctl --since "3 days ago"
Gestion du journal
journalctl --verify journalctl --disk-usage
Vider le journal
journalctl --vacuum-time=2d journalctl --vacuum-size=500M