Lire les logs avec journalctl
Systemd collecte les messages du noyau, des services et de l'authentification dans un journal binaire. journalctl les interroge bien plus précisément qu'un grep dans /var/log/syslog. C'est le premier outil à ouvrir quand un service refuse de démarrer ou s'arrête sans explication.
Les filtres utiles
journalctl -u nginx
journalctl -u nginx -f
journalctl -u nginx --since "1 hour ago"
journalctl -u nginx --since today --until "12:00"
journalctl -p err -b
journalctl -n 100 --no-pager-ucible une unité systemd.-fsuit le journal en direct, commetail -f.--sinceet--untilacceptent une date, une heure ou une expression relative.-p errne garde que les prioritéserret plus graves (warning,err,crit,alert,emerg).-blimite au démarrage courant,-b -1à l'avant-dernier.--no-pagerévite l'ouverture deless, utile dans un script.
Les filtres se combinent :
journalctl -u mon-app -b -p err --no-pagerRetrouver une erreur de démarrage
systemctl status mon-app -l --no-pager
journalctl -u mon-app -b -p err
journalctl -b -p errstatus montre le code de sortie et les dernières lignes. Les messages typiques sont « Failed to start », « address already in use », un chemin introuvable ou un refus de permission. journalctl -b -p err liste toutes les erreurs du démarrage courant, y compris celles d'unités que vous n'avez pas encore identifiées.
Pour un service qui a échoué avant le démarrage actuel :
journalctl -u mon-app -b -1Depuis systemd 240, -g filtre le contenu : journalctl -u nginx -g 'error'. Sinon, redirigez vers grep, mais sachez que la sortie est paginée par défaut.
Maîtriser le stockage et la rotation
journalctl --disk-usagePar défaut, Debian peut conserver le journal en mémoire (/run/log/journal), donc le perdre au redémarrage. Pour un historique persistant :
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journaldLimitez ensuite la taille dans /etc/systemd/journald.conf :
[Journal]
SystemMaxUse=500M
SystemMaxFileSize=50MPuis sudo systemctl restart systemd-journald. Pour réduire immédiatement :
sudo journalctl --vacuum-size=200M
sudo journalctl --vacuum-time=14dCes commandes suppriment les entrées les plus anciennes. Gardez assez d'historique pour diagnostiquer un incident qui date de plusieurs jours.
Accès et confidentialité
Un utilisateur normal ne voit que ses propres messages. Pour lire tout le journal, ajoutez-le au groupe systemd-journal ou adm, puis reconnectez-vous :
sudo usermod -aG systemd-journal utilisateurLes journaux peuvent contenir des jetons, des URL avec paramètres ou des adresses e-mail. Ne collez jamais une sortie brute sur un forum public sans la relire et masquer les secrets. Restreindre la lecture est aussi une mesure de sécurité.
Vérifier
Après avoir corrigé un service, filtrez les cinq dernières minutes et confirmez l'absence d'erreur :
journalctl -u mon-app --since "5 min ago" -p warning
journalctl --disk-usageSi le journal grossit anormalement, cherchez un service qui écrit en boucle avant d'augmenter la limite.
Publicité
Cet article vous a-t-il aidé ?
À lire aussi
- Planifier des tâches avec cronÉcrire une crontab fiable, journaliser la sortie et choisir entre cron et timer systemd.
- Surveiller et libérer l'espace disqueMesurer l'occupation réelle, trouver les gros consommateurs et nettoyer sans casser de service.
- Gérer ses services avec systemdCommandes systemctl essentielles, unité personnalisée pour une application et lecture des journaux.