Catégories
Devops

Linux SystemD

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

Liens