Comment utiliser Journalctl pour lire les journaux système Linux

Pendant de nombreuses années, les journaux système et noyau étaient gérés par un utilitaire appelé syslogd. La plupart des systèmes d’exploitation basés sur Linux ont migré vers systemd, qui est doté d’un autre démon de journalisation, journald. Pour interagir avec ces journaux, vous utilisez l’utilitaire journalctl.

Donner la permission à l’utilisateur de lire les journaux système

Seuls les utilisateurs appartenant aux groupes « adm » ou « systemd-journal » peuvent lire les journaux systemd. Des distributions telles qu’Ubuntu vous ajoutent déjà en tant qu’utilisateur au groupe adm.

Ouvrez un émulateur de terminal et tapez la commande suivante :

groups

journalctl-groups

Si vous voyez « adm » ou « systemd-journal » dans la sortie, vous pouvez sauter le reste des étapes de cette section. Sinon, ajoutez-vous au groupe « adm ».

sudo adduser $USER adm

Vous devrez redémarrer votre session de connexion pour que ce changement prenne effet (déconnectez-vous puis reconnectez-vous). Si vous ne pouvez pas le faire pour diverses raisons, utilisez cette commande pour vous connecter au nouveau groupe sans redémarrer la session graphique.

newgrp adm

Ne fermez pas la fenêtre du terminal. Vous faites maintenant partie du groupe adm – dans la session du terminal, mais pas dans votre session graphique. Si vous ouvrez un nouveau terminal à ce moment-là, votre utilisateur ne sera plus connecté au groupe adm.

Vérifiez si le journal est persistant

Les journaux systemd peuvent être persistants ou volatils. Sur Ubuntu et d’autres distributions, ils sont persistants par défaut. Sur Debian 9, ils sont volatils, ce qui signifie qu’ils ne sont conservés que dans la mémoire (pas sur disque) et disparaissent à l’arrêt ou au redémarrage. Entrez la commande suivante.

journalctl --list-boots

journalctl-list-boots

S’il y a plusieurs entrées ici, il n’y a rien d’autre à faire. Cela signifie que les journaux sont conservés sur le disque (persistants). Si vous n’obtenez qu’une seule entrée, alors le journal est latent. Changez-le en persistant.

sudosed-i'/Storage/ c\Storage=persistent'/etc/systemd/journald.conf

Sélectionner quel journal d’entrée de démarrage visualiser

En général, vous voudrez voir le journal pour le démarrage actuel. Dans de rares cas, vous voudrez voir le démarrage précédent, lorsque quelque chose a mal tourné, par exemple, après un crash système.

Pour voir le journal du démarrage actuel :

journalctl -b0

journalctl-view-current-boot

Pour le démarrage précédent, utilisez « -1 » au lieu de « 0 », et pour deux démarrages en arrière, « -2 » et ainsi de suite.

journalctl -b-1

Naviguer et chercher dans le journal système

Après avoir ouvert le journal avec journalctl, vous pouvez naviguer à travers le texte avec les flèches directionnelles et les touches PAGE UP ou PAGE DOWN. D’autres touches utiles sont :

  • pour aller à la fin de la sortie.

  • < pour aller au début de la sortie.
  • / pour rechercher une chaîne de texte. Après avoir appuyé sur la touche de barre oblique, entrez la chaîne que vous souhaitez trouver, suivie de la touche Entrée. La recherche est sensible à la casse, donc « network » ne trouvera pas les chaînes « Network ». La recherche commence à partir de votre position de vue actuelle, vers le bas. Pour rechercher vers le haut, utilisez ?.
  • n trouve la prochaine correspondance dans une recherche actuelle. N trouve la précédente.
  • q quitte l’utilitaire journalctl.

journalctl-searching

Filtrer les entrées de journal par priorité

Parfois, vous ne voulez rechercher que des erreurs, en ignorant les avis et messages d’état. Chaque entrée dans un journal a une priorité : urgence, alerte, critique, erreur, avertissement, avis, info. Ceux-ci sont classés par ordre d’importance, l’urgence étant réservée aux pires scénarios (système inutilisable). Les messages d’information ne sont que des textes informatifs, rapportant l’état des programmes qui fonctionnent normalement.

Pour n’afficher que les messages d’erreur du démarrage actuel, entrez :

journalctl -b0-p err

journalctl-filter-errors

Si vous voulez voir les erreurs de tous les démarrages, il suffit de supprimer le paramètre « -b » :

journalctl -p err

Voici les codes que vous pouvez passer au paramètre « -p » :

  • alert
  • crit
  • debug
  • emerg
  • err
  • info
  • notice
  • warning

Filtrer les entrées de journal par chemin vers le fichier exécutable du processus ou unité systemd

Certains processus sont démarrés et gérés par ce qu’on appelle des unités systemd. Pour voir tous les journaux liés à l’unité de service cron, entrez :

journalctl -u cron.service

Vous pouvez voir quelles unités vous avez disponibles avec :

systemctl list-dependencies

journalctl-list-dependencies

Vous pouvez naviguer dans la liste avec les touches fléchées haut et bas. Appuyez sur q pour quitter.

Si vous préférez utiliser le chemin vers le fichier exécutable du programme (binaire), passez simplement son chemin complet comme argument.

journalctl /usr/sbin/cron

N’oubliez pas que vous pouvez également filtrer par l’entrée de démarrage actuelle pour vous débarrasser des messages inutiles.

journalctl -b0/usr/sbin/cron

Conclusion

Journalctl vise à faciliter la recherche de ce que vous recherchez. Si vous souhaitez en savoir plus sur des paramètres avancés que vous pouvez utiliser, consultez la page de manuel de la commande journalctl.