Journalctl
| Fiche express | |
|---|---|
| Domaine | Consultation du journal systemd |
| Commande | journalctl
|
| Contexte | Distributions systemd (RHEL7+, Debian/Ubuntu récents…) |
| Voir aussi | Systemctl (gestion des services), Tail (équivalent follow) |
journalctl lit le journal centralisé de systemd (journald), qui remplace ou complète les
fichiers texte classiques de /var/log/. Tous les logs des services gérés par
systemd — et souvent aussi ceux du noyau et de la session utilisateur — y sont indexés, avec
des métadonnées structurées (unité, PID, priorité, horodatage) qui permettent un filtrage bien
plus précis que grep sur un fichier plat.
Filtrer par unité
journalctl -u sshd # logs de l'unité sshd.service
journalctl --unit=chronyd # forme longue, équivalente à -u chronyd
journalctl -u nginx -u php-fpm # plusieurs unités en même temps
C'est le filtre le plus courant : il cible directement un service géré par Systemctl sans avoir à connaître le chemin de son fichier de log (certains services n'en écrivent même plus, tout part dans le journal).
Filtrer par exécutable
journalctl /usr/sbin/crond # tous les messages émis par ce binaire
journalctl _PID=1234 # tous les messages d'un PID donné
Utile pour un programme lancé hors service systemd (cron, script ponctuel) ou pour retrouver les logs d'un process précis quel que soit son unité d'appartenance.
Filtrer par boot
journalctl --list-boots # liste tous les boots disponibles dans le journal
journalctl -b # depuis le démarrage actuel
journalctl -b -1 # le boot précédent
journalctl -b 0 # forme explicite du boot courant
--list-boots affiche un index (souvent négatif pour les boots passés, 0 pour le
courant) avec les horodatages de début et de fin de chaque boot — pratique pour retrouver les
logs juste avant un redémarrage inattendu.
Filtrer par période
journalctl --since=today
journalctl --since="2026-07-20 09:00" --until="2026-07-20 12:00"
journalctl --since="1 hour ago"
--since/--until acceptent des dates absolues (AAAA-MM-JJ
HH:MM:SS) ou des expressions relatives ("1 hour ago", yesterday,
now), combinables avec -u/-b pour restreindre encore.
Filtrer par priorité
journalctl -p err # err et plus grave (crit, alert, emerg)
journalctl -p warning..err # plage de priorités
Les niveaux suivent l'échelle syslog : emerg, alert, crit,
err, warning, notice, info, debug
(du plus grave au moins grave). -p seul filtre ce niveau et tous les plus graves.
Suivre le journal en direct
journalctl -f # équivalent de tail -f pour le journal, voir [[Tail]]
journalctl -u nginx -f # follow limité à une unité
Persistance du journal
Par défaut sur beaucoup de distributions, le journal est volatile : stocké en RAM
(/run/log/journal/) et perdu au redémarrage. Le rendre persistant sur disque se
configure dans /etc/systemd/journald.conf :
# /etc/systemd/journald.conf
[Journal]
Storage=persistent # écrit dans /var/log/journal/ (survit aux reboots)
# Storage=volatile # RAM uniquement (défaut sur certaines distros)
# Storage=auto # persistant si /var/log/journal/ existe, volatile sinon
mkdir -p /var/log/journal
systemctl restart systemd-journald # applique le changement de Storage
Purger le journal
Le journal peut grossir jusqu'à saturer le disque si aucune limite n'est fixée. Deux leviers de purge ponctuelle :
journalctl --vacuum-size=500M # ne conserve que les 500 derniers Mo
journalctl --vacuum-time=2weeks # supprime tout ce qui a plus de 2 semaines
Pour une limite permanente plutôt qu'une purge ponctuelle, SystemMaxUse= dans
journald.conf fixe un plafond appliqué en continu par journald.