Linux / Commande journalctl : filtrer les journaux système et de service

journalctl recherche les messages système et applicatifs conservés dans le journal systemd. Combinez un service, un démarrage, une période et une priorité pour examiner un incident sans parcourir tous les journaux. Les résultats restent limités aux entrées collectées, conservées et accessibles à votre compte.

Lire les entrées accessibles et comprendre une ligne

journalctl

Sans filtre, la commande affiche les entrées accessibles de la plus ancienne à la plus récente. Le pager habituel est less : utilisez les flèches pour parcourir et q pour quitter. Les lignes longues peuvent dépasser la largeur visible du pager ; les flèches horizontales permettent alors d’en voir la suite. --no-pager supprime le pager, sans limiter la quantité de données.

Une ligne au format court peut ressembler à cet exemple fictif :

Sep 28 09:00:00 web01 sshd[1234]: Server listening on 0.0.0.0 port 22.

On y lit la date affichée, le nom de machine, l’identifiant du programme avec un numéro de processus, puis le message. Cet exemple n’est pas un résultat garanti de SSH : le texte, les champs et le format dépendent de la source et de l’option de sortie. Le format court ne contient pas tous les détails temporels ; -o short-full affiche un horodatage plus complet et --utc demande un affichage en temps universel coordonné (UTC).

Les journaux système et ceux d’autres utilisateurs peuvent être restreints. Une vue partielle ne prouve pas qu’un service n’a rien écrit ; vérifiez les messages d’accès et la politique de la distribution. Pour le gestionnaire de services utilisateur, le contexte --user se distingue du gestionnaire système décrit ici.

Combiner service, démarrage et priorité

Les commandes suivantes utilisent sshd.service comme exemple. Vérifiez le vrai nom de l’unité avec systemctl et l’inventaire des services ; il peut être différent selon la distribution.

journalctl -u sshd.service -n 100
journalctl -u sshd.service -n 3 --no-pager
journalctl -b -p err

-u limite à l’unité et aux messages associés que journalctl sélectionne pour celle-ci. -n limite le nombre d’événements récents, pas nécessairement le nombre de lignes physiques : un événement peut occuper plusieurs lignes. -b sans argument choisit le démarrage courant.

Avec journalctl, -p err sélectionne err et les niveaux plus importants : crit, alert et emerg. Il ne sélectionne pas seulement le mot err. Ce comportement diffère d’une liste explicite de niveaux dans dmesg. Vous pouvez aussi donner une plage comme err..warning pour inclure les bornes et les niveaux intermédiaires.

Pour un service, au démarrage courant, avec les priorités d’erreur et plus graves :

journalctl -u sshd.service -b -p err --no-pager

Ces restrictions se combinent. Une sélection trop étroite peut masquer la première cause d’un incident ; élargissez ensuite la période ou les priorités pour lire les messages précédents et les conséquences.

Choisir une période et suivre les nouveaux messages

Pour un incident dont la fenêtre horaire est connue, donnez des bornes adaptées à votre enquête. Les dates ci-dessous sont un exemple à remplacer, interprété dans le contexte horaire du système :

journalctl -u sshd.service --since '2026-09-28 09:00:00' --until '2026-09-28 09:15:00' --no-pager

Les bornes sont inclusives. Si vous comparez plusieurs machines, vérifiez le fuseau et les éventuelles corrections de l’horloge ; afficher UTC ne corrige pas un décalage réellement présent dans l’horloge d’une source. Gardez une marge avant et après l’incident pour relier les événements.

Pour suivre un service :

journalctl -u sshd.service -f

-f commence par des entrées récentes puis affiche les nouvelles au fur et à mesure. Ctrl+C arrête ce suivi sans arrêter le service ni supprimer ses journaux. Il s’agit d’une consultation continue : l’absence de nouveau message peut simplement signifier qu’aucun événement correspondant n’est ajouté.

Retrouver un ancien démarrage et préserver les preuves

journalctl --list-boots
journalctl -b -1
journalctl -k -b -1

--list-boots affiche les démarrages conservés avec leurs identifiants et les limites temporelles des messages présents. Dans une consultation locale habituelle, -b -1 vise le démarrage précédent ; plus précisément, l’index négatif est relatif à la fin du journal sélectionné. -k limite aux messages noyau de ce démarrage.

Si le démarrage recherché n’est plus conservé, une nouvelle commande de filtre ne le recrée pas. Les journaux peuvent être volatils, limités par la politique de stockage ou supprimés. La rotation seule ne signifie pas automatiquement que les archives ont disparu : journalctl peut lire les fichiers archivés encore accessibles.

Besoin Option
Une unité précise -u UNITE
Démarrage courant ou choisi -b ou -b INDEX
Derniers événements -n N
Suivi des nouvelles entrées -f
Priorité ou plage -p NIVEAU ou -p DEBUT..FIN
Fenêtre temporelle --since et --until

Avant de partager un extrait, examinez les messages : ils peuvent contenir des comptes, chemins, adresses ou jetons. Masquez les valeurs sensibles en conservant le contexte nécessaire. Les options --vacuum-* suppriment des fichiers de journaux archivés ; elles ne font pas partie d’une simple consultation et peuvent retirer des éléments utiles à l’enquête.

Le manuel journalctl de systemd décrit les filtres, priorités, formats, accès et commandes de gestion des journaux.