Systemd: analyser les erreurs au démarrage et autres astuces

Vérifier les services qui sont actuellement plantés :

sudo systemctl --failed

Plus d'infos sur les erreurs

sudo journalctl -f

Pour le plaisir :

sudo journalctl -feu machin.service
  • -f : n'affiche que les entrées de journal les plus récentes et imprime continuellement les nouvelles entrées au fur et à mesure qu'elles sont ajoutées au journal.
  • -e : saute au bout du journal directement.
  • -u indique un service en particulier, cela réduit les recherches.

Obtenir des journaux précis

Journal complet de tout ce qui s'est passé ; pour éviter que ce soit trop long, on précise une unité temporelle, et puis on met ça dans un fichier texte, ça aidera à consulter…

sudo journalctl --since="today" > journal.txt

Faire une recherche dans ce fichier avec “warn”, “fail”, “error” permet déjà de lister quelques soucis.

On peut aussi filtrer par type de message (-p err pour les erreurs) et depuis une certaine date (-until=“date au format anglais”):

sudo journalctl -p err --until="2018-03-19 12h:00:00" > journalerr.txt

Pour avoir tout le log d'un session, c'est -b suivi d'un décompte : -1 pour la session précédente, -2 pour la session d'avant, etc.

sudo journalctl -b -1

No pager

Si on est bloqué dans une console avec une taille limitée, cette option permet de tout lire sans devoir jouer des flèches :

systemctl status --no-pager -l SERVICE.service

Chercher

C'est l'option -g comme “grep” :

journalctl -g "machin*"

Autres détails avec dmesg

sudo dmesg -l err,crit,warn

Lister les services actifs et leur état

sudo systemctl --type=service --no-pager

Limiter la taille des logs

sudo nano /etc/systemd/journald.conf

Modifier pour avoir SystemMaxUse=512M (par exemple, et regarder les autres options). SystemMaxFiles=100 est une option complémentaire utile (il va faire l'équivalent d'un log rotate).

Puis redémarrer pour que ce soit pris en compte :

systemctl restart systemd-journald.service

Pour libérer en urgence (manip temporaire) :

sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-time=10d

Avoir des vrais journaux de log

On peut forcer journalctl à nous refiler des vrais journaux, il va faire transiter par rsyslog.

Donc en premier, installer rsyslog.

Puis dans /etc/systemd/journald.conf, décommenter ForwardToSyslog=yes.

Relancer systemd, ça marche.

systemctl restart systemd-journald.service

Journaux de Postfix

La commande suivante permet d'avoir les logs “mails” de postfix :

journalctl -ru postfix@-.service

Le -r c'est pour inverser l'ordre, avoir les lignes les plus récentes au début.

En gros postfix.service ça doit être les logs du démon postfix, et postfix@-.service ceux de son pool de mails. Ce n'est pas hyper évident donc c'est noté ici !

 Ce texte est placé sous licence CC0

CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/systemd_error.txt · Dernière modification : 24/07/2024 08:35 de Zatalyz