Lire les logs avec journalctl

2 min de lecture07 novembre 2026

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

Bash
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
  • -u cible une unité systemd.
  • -f suit le journal en direct, comme tail -f.
  • --since et --until acceptent une date, une heure ou une expression relative.
  • -p err ne garde que les priorités err et plus graves (warning, err, crit, alert, emerg).
  • -b limite au démarrage courant, -b -1 à l'avant-dernier.
  • --no-pager évite l'ouverture de less, utile dans un script.

Les filtres se combinent :

Bash
journalctl -u mon-app -b -p err --no-pager

Retrouver une erreur de démarrage

Bash
systemctl status mon-app -l --no-pager
journalctl -u mon-app -b -p err
journalctl -b -p err

status 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 :

Bash
journalctl -u mon-app -b -1

Depuis 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

Bash
journalctl --disk-usage

Par défaut, Debian peut conserver le journal en mémoire (/run/log/journal), donc le perdre au redémarrage. Pour un historique persistant :

Bash
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

Limitez ensuite la taille dans /etc/systemd/journald.conf :

INI
[Journal]
SystemMaxUse=500M
SystemMaxFileSize=50M

Puis sudo systemctl restart systemd-journald. Pour réduire immédiatement :

Bash
sudo journalctl --vacuum-size=200M
sudo journalctl --vacuum-time=14d

Ces 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 :

Bash
sudo usermod -aG systemd-journal utilisateur

Les 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 :

Bash
journalctl -u mon-app --since "5 min ago" -p warning
journalctl --disk-usage

Si 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