Comment utiliser la commande dmesg sous Linux

La dmesg La commande vous permet de scruter le monde caché des processus de démarrage Linux. Examinez et surveillez les messages du périphérique matériel et du pilote à partir de la mémoire tampon en anneau du noyau avec «l’ami du chercheur de pannes».

Comment fonctionne le tampon en anneau de Linux

Dans les ordinateurs de type Linux et Unix, le démarrage et le démarrage sont deux phases distinctes de la séquence d’événements qui se produisent lorsque l’ordinateur est mis sous tension.

La processus de démarrage (BIOS ou UEFI, MBR, et VER) amène l’initialisation du système au point où le noyau est chargé en mémoire et connecté au disque virtuel initial (initrd ou initramfs), et systemd a démarré.

La processus de démarrage puis prenez le relais et terminez l’initialisation du système d’exploitation. Au tout début de l’initialisation, les démons de journalisation tels que syslogd ou rsyslogd ne sont pas encore opérationnels. Pour éviter de perdre les messages d’erreur et les avertissements notables de cette phase d’initialisation, le noyau contient un tampon en anneau qu’il utilise comme banque de messages.

Un tampon en anneau est un espace mémoire réservé aux messages. Il est de conception simple et de taille fixe. Lorsqu’il est plein, les messages les plus récents écrasent les messages les plus anciens. Conceptuellement, il peut être considéré comme un « tampon circulaire. »

Le tampon en anneau du noyau stocke des informations telles que les messages d’initialisation des pilotes de périphériques, les messages du matériel et les messages des modules du noyau. Comme il contient ces messages de démarrage de bas niveau, la mémoire tampon en anneau est un bon endroit pour lancer une enquête sur les erreurs matérielles ou d’autres problèmes de démarrage.

Mais ne partez pas les mains vides. Prendre dmesg avec toi.

La commande dmesg

La dmesg la commande vous permet pour consulter les messages stockés dans la mémoire tampon en anneau. Par défaut, vous devez utiliser sudo utiliser dmesg.

sudo dmesg

Tous les messages de la mémoire circulaire sont affichés dans la fenêtre du terminal.

C’était un déluge. De toute évidence, ce que nous devons faire est de le faire passer less:

sudo dmesg | less

Nous pouvons maintenant faire défiler les messages à la recherche d’éléments d’intérêt.

Vous pouvez utiliser la fonction de recherche dans less pour localiser et mettre en évidence les éléments et les termes qui vous intéressent. Démarrez la fonction de recherche en appuyant sur la touche barre oblique «/» dans less.

Bientôt: Comment utiliser la commande less sous Linux

Suppression du besoin de sudo

Si vous voulez éviter d’avoir à utiliser sudo chaque fois que vous utilisez dmesg, vous pouvez utiliser cette commande. Mais attention: il permet à toute personne disposant d’un compte utilisateur d’utiliser votre ordinateur dmesg sans avoir à utiliser sudo.

sudo sysctl -w kernel.dmesg_restrict=0

Forcer la sortie couleur

Par défaut, dmesg sera probablement configuré pour produire une sortie colorée. Si ce n’est pas le cas, tu peux le dire dmesg pour coloriser sa sortie à l’aide du -L (couleur) option.

sudo dmesg -L

Forcer dmesg pour toujours utiliser par défaut un affichage colorisé, utilisez cette commande:

sudo dmesg --color=always

Horodatages humains

Par défaut, dmesg utiliser une notation d’horodatage des secondes et nanosecondes depuis le démarrage du noyau. Pour obtenir ce rendu dans un format plus convivial, utilisez le -H option (humaine).

sudo dmesg -H

Cela provoque deux choses.

En relation :  Comment raconter une blague comme Elon Musk

  • La sortie est automatiquement affichée dans less.
  • Les horodatages affichent un horodatage avec la date et l’heure, avec une résolution minute. Les messages qui se sont produits chaque minute sont étiquetés avec les secondes et les nanosecondes à partir du début de cette minute.

Horodatages lisibles par l’homme

Si vous n’avez pas besoin d’une précision de l’ordre de la nanoseconde, mais que vous voulez des horodatages plus faciles à lire que les valeurs par défaut, utilisez le -T (lisible par l’homme) option. (C’est un peu déroutant. -H est l’option «humaine», -T est l’option «lisible par l’homme».)

sudo dmesg -T

Les horodatages sont rendus sous forme de dates et d’heures standard, mais la résolution est réduite à une minute.

Tout ce qui s’est passé en une seule minute a le même horodatage. Si vous ne vous souciez que de la séquence des événements, cela suffit. Notez également que vous êtes renvoyé à l’invite de commande. Cette option n’appelle pas automatiquement less.

Regarder des événements en direct

Pour voir les messages à mesure qu’ils arrivent dans le tampon en anneau du noyau, utilisez le --follow (attendre les messages) option. Cette phrase peut sembler un peu étrange. Si le tampon en anneau est utilisé pour stocker des messages d’événements qui ont lieu pendant la séquence de démarrage, comment les messages en direct peuvent-ils arriver dans le tampon en anneau une fois que l’ordinateur est opérationnel?

Tout ce qui provoque une modification du matériel connecté à votre ordinateur entraînera l’envoi de messages au tampon en anneau du noyau. Mettez à jour ou ajoutez un module de noyau, et vous verrez des messages de tampon en anneau sur ces changements. Si vous branchez une clé USB ou connectez ou déconnectez un appareil Bluetooth, vous verrez des messages dans le dmesg production. Même le matériel virtuel fera apparaître de nouveaux messages dans la mémoire tampon en anneau. Lancez une machine virtuelle et vous verrez de nouvelles informations arriver dans le tampon en anneau.

sudo dmesg --follow

Notez que vous n’êtes pas renvoyé à l’invite de commande. Lorsque de nouveaux messages apparaissent, ils sont affichés par dmesg en bas de la fenêtre du terminal.

Sortie de sudo dmesg --Follow na terminal window

Même le montage d’un disque CD-ROM est considéré comme un changement, car vous avez greffé le contenu du disque CD-ROM dans l’arborescence des répertoires.

Messages de tampon en anneau dmesg suite au montage d'un disque CD-ROM

Pour quitter le flux en temps réel, appuyez sur Ctrl+C.

Récupérer les dix derniers messages

Utilisez la commande tail pour récupérer les dix derniers messages de tampon en anneau du noyau. Bien sûr, vous pouvez récupérer n’importe quel nombre de messages. Dix n’est que notre exemple.

sudo dmesg | last -10

Les dix derniers messages sont récupérés et répertoriés dans la fenêtre du terminal.

Recherche de termes spécifiques

Dirigez la sortie de dmesg à travers grep pour rechercher des chaînes ou des modèles particuliers. Ici, nous utilisons le -i (Ignorer la casse) afin que la casse des chaînes correspondantes ne soit pas prise en compte. nos résultats incluront «usb» et «USB» et toute autre combinaison de minuscules et de majuscules.

sudo dmesg | grep -i usb

Les résultats de la recherche en surbrillance sont en majuscules et en minuscules.

On peut isoler les messages qui contiennent des références au premier SCSI disque dur sur le système sda. (Réellement, sda est également utilisé de nos jours pour le premier disque dur SATAet pour les clés USB.)

sudo dmesg | grep -i sda

Tous les messages qui mentionnent sda sont récupérés et répertoriés dans la fenêtre du terminal.

En relation :  Comment obtenir des cartes et une navigation hors ligne sur iPhone

Faire grep recherchez plusieurs termes à la fois, utilisez le -E (étendre l’expression régulière). Vous devez fournir les termes de recherche dans une chaîne entre guillemets avec le tube « | » délimiteurs entre les termes de recherche:

sudo dmesg | grep -E "memory|tty|dma"

Tout message qui mentionne l’un des termes de recherche est répertorié dans la fenêtre du terminal.

Utilisation des niveaux de journal

Chaque message enregistré dans le tampon en anneau du noyau est associé à un niveau. Le niveau représente l’importance de l’information dans le message. Les niveaux sont:

  • émerger: Le système est inutilisable.
  • alerte: Des mesures doivent être prises immédiatement.
  • crit: Conditions critiques.
  • se tromper: Conditions d’erreur.
  • prévenir: Conditions d’avertissement.
  • remarquer: Condition normale mais significative.
  • Info: Informatif.
  • déboguer: Messages au niveau du débogage.

Nous pouvons faire dmesg extraire les messages qui correspondent à un niveau particulier en utilisant le -l (level) et en passant le nom du niveau comme paramètre de ligne de commande. Pour afficher uniquement les messages de niveau «informationnel», utilisez cette commande:

sudo dmesg -l info

Tous les messages répertoriés sont des messages d’information. Ils ne contiennent ni erreurs ni avertissements, juste des notifications utiles.

Combinez deux ou plusieurs niveaux de journalisation en une seule commande pour récupérer les messages de plusieurs niveaux de journalisation:

sudo dmesg -l debug,notice

La sortie de dmesg est un mélange de messages de chaque niveau de journal:

Les catégories d’installations

La dmesg les messages sont regroupés en catégories appelées «installations». La liste des installations est:

  • crénage: Messages du noyau.
  • utilisateur: Messages au niveau de l’utilisateur.
  • courrier: Système de messagerie.
  • démon: Démons système.
  • auth: Messages de sécurité / d’autorisation.
  • syslog: Messages syslogd internes.
  • lpr: Sous-système d’imprimante en ligne.
  • nouvelles: Sous-système de nouvelles du réseau.

Nous pouvons demander dmesg pour filtrer sa sortie pour n’afficher que les messages dans une installation spécifique. Pour ce faire, nous devons utiliser le -f (installation) option:

sudo dmesg -f daemon

dmesg liste tous les messages relatifs aux démons dans la fenêtre du terminal.

Comme nous l’avons fait avec les niveaux, nous pouvons demander dmesg pour répertorier les messages de plusieurs établissements à la fois:

sudo dmesg -f syslog, daemon

Le résultat est un mélange de messages de journal syslog et démon.

Combiner facilité et niveau

La -x (décoder) fait dmesg afficher l’installation et le niveau sous forme de préfixes lisibles par l’homme pour chaque ligne.

sudo dmesg -x

L’installation et le niveau sont visibles au début de chaque ligne:

La première section en surbrillance est un message de la fonction «noyau» avec un niveau de «notification». La deuxième section en surbrillance est un message de la fonction «noyau» avec un niveau «info».

C’est génial, mais pourquoi?

En un mot, recherche de pannes.

Si vous rencontrez des problèmes avec un matériel non reconnu ou ne se comportant pas correctement, dmesg peut jeter un peu de lumière sur le problème.

  • Utilisation dmesg pour revoir les messages des plus hauts niveau à chaque niveau inférieur, à la recherche d’erreurs ou d’avertissements mentionnant l’élément matériel ou pouvant avoir une incidence sur le problème.
  • Utilisation dmesg pour rechercher toute mention du établissement pour voir s’ils contiennent des informations utiles.
  • Tuyau dmesg à travers grep et recherchez les chaînes ou identifiants comme le fabricant du produit ou les numéros de modèle.
  • Tuyau dmesg à travers grep et chercher termes génériques comme «gpu» ou «stockage», ou des termes tels que «échec», «échec» ou «impossible».
  • Utilisez le --follow option et montre dmesg messages en temps réel.

Bonne chasse.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.