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 !