Comment vérifier si le tampon circulaire du noyau est actif sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si le tampon circulaire du noyau (kernel ring buffer) est actif sous Linux. Le tampon circulaire du noyau est un composant essentiel pour comprendre les événements du système et résoudre les problèmes. Vous allez explorer trois méthodes pour accéder et inspecter son contenu : en utilisant la commande dmesg pour afficher directement le tampon, en vérifiant sa présence et son contenu via le fichier /proc/kmsg, et enfin, en utilisant journalctl pour examiner les journaux du noyau gérés par le journal systemd. Ces étapes vous fourniront les compétences pratiques nécessaires pour surveiller et analyser les messages du noyau sur votre système Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/cat -.-> lab-558723{{"Comment vérifier si le tampon circulaire du noyau est actif sous Linux"}} linux/less -.-> lab-558723{{"Comment vérifier si le tampon circulaire du noyau est actif sous Linux"}} linux/grep -.-> lab-558723{{"Comment vérifier si le tampon circulaire du noyau est actif sous Linux"}} end

Vérifier le tampon avec dmesg

Dans cette étape, vous apprendrez à utiliser la commande dmesg pour afficher le tampon circulaire du noyau (kernel ring buffer). Le tampon circulaire du noyau est une zone mémoire spéciale où le noyau Linux stocke les messages concernant le matériel, les pilotes de périphériques et les événements du système. Ces messages sont essentiels pour résoudre les problèmes et comprendre ce qui se passe au niveau bas de votre système.

Imaginez le tampon circulaire du noyau comme un carnet de bord pour le noyau. Lorsque quelque chose d'important se produit, comme la détection d'un périphérique ou la survenue d'une erreur, le noyau écrit un message dans ce tampon. dmesg est l'outil que vous utilisez pour lire ces messages.

Ouvrez votre terminal s'il n'est pas déjà ouvert. Vous pouvez le faire en cliquant sur l'icône Xfce Terminal sur le côté gauche de votre bureau.

Maintenant, tapez la commande suivante et appuyez sur Entrée :

dmesg

Vous verrez de nombreuses lignes de texte défiler dans votre terminal. Il s'agit du contenu du tampon circulaire du noyau. La sortie peut ressembler à ceci (le contenu exact variera en fonction de votre système et de la durée de son fonctionnement) :

[    0.000000] Linux version 5.15.0-xx-generic (buildd@lcy02-amd64-xx) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #xx-Ubuntu SMP Tue Feb 20 15:48:58 UTC 2024
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-xx-generic root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro console=ttyS0,115200
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
...
[   10.123456] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[   10.567890] usb 1-1: New USB device found, idVendor=xxxx, idProduct=xxxx
[   10.567890] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
...

Les horodatages au début de chaque ligne indiquent le temps écoulé depuis le démarrage du système.

Étant donné que la sortie peut être très longue, il est souvent utile de rediriger la sortie de dmesg vers un visualiseur de texte comme less ou more. Cela vous permet de parcourir la sortie page par page.

Essayez cette commande :

dmesg | less

Maintenant, vous pouvez utiliser les touches fléchées pour faire défiler le texte vers le haut et vers le bas, et appuyer sur q pour quitter less.

Vous pouvez également filtrer la sortie de dmesg en utilisant grep pour rechercher des mots - clés spécifiques. Par exemple, pour voir les messages liés aux périphériques USB, vous pouvez utiliser :

dmesg | grep -i usb

L'option -i rend la recherche insensible à la casse.

L'utilisation de dmesg est une compétence fondamentale pour diagnostiquer les problèmes matériels et comprendre les processus de démarrage du système sous Linux.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier le tampon dans /proc/kmsg

Dans l'étape précédente, vous avez utilisé la commande dmesg pour afficher le tampon circulaire du noyau (kernel ring buffer). Maintenant, explorons d'où dmesg tire ses informations. Le tampon circulaire du noyau est exposé sous forme de fichier virtuel dans le système de fichiers /proc, plus précisément à l'emplacement /proc/kmsg.

Le système de fichiers /proc est un système de fichiers spécial sous Linux qui fournit des informations sur les processus et d'autres informations système. C'est un moyen pour le noyau de communiquer avec les programmes de l'espace utilisateur. Les fichiers dans /proc ne sont pas des fichiers réels sur le disque ; ils sont générés à la volée par le noyau lorsque vous y accédez.

Le fichier /proc/kmsg contient les mêmes messages du noyau que ceux affichés par dmesg. Cependant, la lecture directe de /proc/kmsg est un peu différente. dmesg traite et formate la sortie pour faciliter la lecture, tandis que la lecture directe de /proc/kmsg vous donne les messages bruts.

Essayons de lire le contenu de /proc/kmsg en utilisant la commande cat.

Ouvrez votre terminal s'il n'est pas déjà ouvert.

Tapez la commande suivante et appuyez sur Entrée :

cat /proc/kmsg

Vous pourriez voir une sortie, mais elle peut être moins facile à lire que celle de dmesg. De plus, la lecture de /proc/kmsg peut parfois bloquer si aucun nouveau message n'est disponible, ou elle peut afficher des messages qui ont déjà été lus.

<level>message
<level>message
...

La partie <level> indique le niveau de journalisation du message (par exemple, critique, erreur, avertissement, information, débogage).

Bien que vous puissiez lire /proc/kmsg directement, dmesg est l'outil standard et recommandé pour afficher le tampon circulaire du noyau car il offre de meilleures options de formatage et de filtrage. Comprendre que /proc/kmsg est la source vous aide à comprendre le fonctionnement interne de dmesg.

Pour la plupart des cas pratiques, vous utiliserez dmesg plutôt que de lire /proc/kmsg directement. Cette étape a principalement pour but de vous montrer la source sous - jacente de la sortie de dmesg.

Cliquez sur Continuer pour passer à l'étape suivante, où nous examinerons un système de journalisation plus moderne.

Inspecter les journaux avec journalctl

Dans les étapes précédentes, vous avez appris à connaître le tampon circulaire du noyau (kernel ring buffer) et à afficher son contenu à l'aide de dmesg. Bien que dmesg soit très utile pour les messages du noyau, les systèmes Linux modernes utilisent un système de journalisation plus complet appelé systemd-journald. La commande journalctl est l'outil principal pour interagir avec le journal de systemd-journald.

systemd-journald collecte les messages de journal à partir de diverses sources, y compris le noyau (comme les messages que vous avez vus avec dmesg), les services système, les applications, et même la sortie standard et l'erreur standard des processus. Il stocke ces journaux dans un format structuré et indexé, ce qui facilite la recherche et le filtrage des messages.

Explorons la commande journalctl.

Ouvrez votre terminal s'il n'est pas déjà ouvert.

Tapez la commande suivante et appuyez sur Entrée :

journalctl

Cette commande affichera tous les messages de journal collectés par systemd-journald. Comme avec dmesg, la sortie peut être très longue et est généralement redirigée automatiquement vers un visualiseur de texte comme less.

-- Journal begins at Tue 2024-07-23 10:00:00 UTC, ends at Tue 2024-07-23 10:30:00 UTC. --
Jul 23 10:00:01 hostname systemd[1]: Starting Network Manager...
Jul 23 10:00:02 hostname kernel: Linux version 5.15.0-xx-generic (...)
Jul 23 10:00:03 hostname systemd[1]: Started Network Manager.
Jul 23 10:00:04 hostname systemd[1]: Starting OpenSSH server daemon...
...

Vous pouvez utiliser les touches fléchées pour faire défiler le texte et appuyer sur q pour quitter le visualiseur.

journalctl dispose de nombreuses options pour filtrer les journaux. Voici quelques exemples :

Pour afficher uniquement les messages du noyau (similaire à dmesg) :

journalctl -k

Pour afficher les journaux d'un service spécifique, par exemple, le service SSH :

journalctl -u ssh.service

Pour afficher les journaux depuis une heure spécifique, par exemple, depuis "aujourd'hui" :

journalctl --since "today"

Pour afficher les journaux les plus récents et suivre les nouveaux messages au fur et à mesure qu'ils arrivent (comme tail -f) :

journalctl -f

Appuyez sur Ctrl+C pour quitter la commande journalctl -f.

journalctl est un outil puissant pour l'administration système et la résolution de problèmes. Il fournit un emplacement centralisé pour les journaux et des options flexibles pour les afficher et les filtrer.

Expérimentez avec certaines des options de journalctl dans votre terminal pour voir comment elles affectent la sortie.

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, vous avez appris à vérifier si le tampon circulaire du noyau (kernel ring buffer) est actif sous Linux. Vous avez commencé par utiliser la commande dmesg pour afficher le contenu du tampon circulaire du noyau, qui stocke des messages importants concernant le matériel, les pilotes de périphériques et les événements système. Vous avez vu comment dmesg affiche ces messages avec des horodatages, fournissant un journal de bas niveau de l'activité du système.

Vous avez également appris que la sortie de dmesg peut être très longue et que la redirection de cette sortie vers un visualiseur de texte comme less ou more est une technique utile pour naviguer dans la sortie. Cette première étape a démontré la méthode principale pour accéder au contenu du tampon circulaire du noyau et pour comprendre son rôle dans la surveillance et la résolution de problèmes du système.