Comment utiliser la commande dmesg sous Linux

Contenu

Un indicateur de terminal stylisé sur un ordinateur portable Linux.

Les dmesg La commande vous permet de regarder à l'intérieur du monde caché des processus de démarrage Linux. Examinez et surveillez les messages du périphérique matériel et du pilote à partir du tampon en anneau du noyau avec “l'ami du dénicheur”.

Comment fonctionne Linux Ring Buffer

Sur les ordinateurs de type Linux et Unix, le démarrage et le démarrage sont deux phases distinctes dans la séquence d'événements qui se produisent lorsque l'ordinateur est allumé.

Les processus de démarrage (BIOS O UEFA, MBR, et REPAS) porter l'initialisation du système au point où le noyau se charge en mémoire et se connecte au disque virtuel initial (initrd ou initramfs), et système A démarré.

Les processus de démarrage puis prenez le témoin et terminez l'initialisation du système d'exploitation. Aux premiers stades de l'initialisation, connecter des démons comme syslogd O rsyslogd pas encore opérationnel. Pour éviter de manquer des messages d'erreur notables et des avertissements de cette phase d'initialisation, le noyau contient un tampon d'anneau que vous utilisez comme magasin de messages.

Un ring buffer est un espace mémoire réservé aux messages. Il est de conception simple et de taille fixe. Quand c'est plein, les nouveaux messages écrasent les anciens messages. Conceptuellement, peut être considéré comme un “tampon circulaire. “

Le tampon en anneau du noyau stocke des informations telles que les messages d'initialisation du pilote de périphérique, messages matériels et messages du module noyau. Parce qu'il contient ces messages de démarrage de bas niveau, la mémoire tampon en anneau est un bon endroit pour commencer une enquête sur les erreurs matérielles ou d'autres problèmes de démarrage.

Mais ne partez pas les mains vides. Apporter dmesg avec vous.

La commande dmesg

Les dmesg la commande vous permet pour passer en revue les messages qui sont stockés dans la mémoire tampon en anneau. Par défaut, doit utiliser sudo utiliser dmesg.

sudo dmesg

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

C'était un déluge. Évidemment, ce que nous devons faire est de le canaliser less:

sudo dmesg | moins

Maintenant, nous pouvons faire défiler les messages à la recherche d'éléments d'intérêt.

Vous pouvez utiliser la fonction de recherche à l'intérieur less pour localiser et mettre en évidence les éléments et les termes qui vous intéressent. Lancez la fonction de recherche en appuyant sur la touche barre oblique “/” au less.

EN RELATION: Comment utiliser la commande less sous Linux

Éliminer le besoin de sudo

Si vous voulez éviter d'avoir à utiliser sudo chaque fois que vous utilisez dmesg, tu peux utiliser cette commande. Mais garde à l'esprit: 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 couleur. Si ce n'est pas comme ça, vous pouvez le dire dmesg pour colorer votre sortie en utilisant le -L option (Couleur).

sudo dmesg -L

Forcer dmesg de toujours utiliser un écran couleur par défaut, utilise cette commande:

sudo dmesg --color=always

Horodatages humains

Par défaut, dmesg utiliser une notation d'horodatage en secondes et nanosegundos depuis le démarrage du noyau. Pour que cela soit rendu dans un format plus convivial, utiliser el -H option (Humain).

sudo dmesg -H

Cela fait se produire deux choses.

  • La sortie s'affiche automatiquement dans less.
  • Les horodatages affichent un horodatage avec la date et l'heure, avec une résolution de minutes. Les messages qui se sont produits dans chaque minute sont étiquetés avec les secondes et les nanosecondes depuis le début de cette minute.

Horodatages lisibles par l'homme

Si vous n'avez pas besoin d'une précision à la nanoseconde, mais vous voulez des horodatages plus faciles à lire que la valeur par défaut, Utilisez le -T option (lisible par l'homme). (C'est un peu confus. -H est l'option “Humain”, -T est l'option “lisible par l'homme”).

sudo dmesg -T

Les horodatages sont représentés 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 tout ce qui vous intéresse c'est la séquence des événements, c'est assez. En outre, notez qu'ils le renvoient à l'invite de commande. Cette option n'appelle pas automatiquement less.

Voir les événements en direct

Pour afficher les messages lorsqu'ils atteignent le tampon en anneau du noyau, Utilisez le --follow (attendre les messages) option. Cette phrase peut sembler un peu étrange. Si la mémoire tampon en anneau est utilisée pour stocker des messages pour les événements qui se produisent pendant la séquence de démarrage, Comment les messages en direct peuvent-ils accéder à la mémoire tampon une fois que l'ordinateur est opérationnel?

Tout ce qui provoque un changement dans le matériel connecté à votre ordinateur entraînera l'envoi de messages à la mémoire tampon en anneau du noyau. Mettez à jour ou ajoutez un module de noyau et vous verrez des messages de tampon en anneau concernant ces changements. Si vous connectez 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 provoquera l'apparition de nouveaux messages dans la mémoire tampon en anneau. Allumez une machine virtuelle et vous verrez de nouvelles informations arriver dans la mémoire tampon en anneau.

sudo dmesg --suivre

Notez que vous ne retournerez pas à l'invite de commande. Lorsque de nouveaux messages apparaissent, sont représentés par dmesg en bas de la fenêtre du terminal.

Sortie de sudo dmesg --follow na fenêtre de terminal

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

Messages de tampon annulaire Dmesg résultant du montage d'un disque CD-ROM

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

Récupérer les dix derniers messages

Utilisez la commande tail récupérer les dix derniers messages de la mémoire tampon en anneau du noyau. Bien sûr, peut récupérer n'importe quel nombre de messages. Dix est juste notre exemple.

sudo dmesg | dernier -10

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

Rechercher des termes spécifiques

Canaliser la sortie de dmesg par grep pour rechercher des chaînes ou des motifs particuliers. Ici, nous utilisons le -i (ignorer les majuscules et les minuscules) de sorte que le cas des chaînes correspondantes soit ignoré. nos résultats comprendront “USB” et “USB” et toute autre combinaison de minuscules et majuscules.

sudo dmesg | grep -i usb

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

Nous pouvons isoler les messages qui contiennent des références au premier SCSI disque dur dans le système sda. (Réellement, sda il est également utilisé aujourd'hui pour le premier disque dur SATAet pour les clés USB).

sudo dmesg | grep -i sda

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

Pour faire grep rechercher plusieurs termes à la fois, Utilisez le -E (étendre l'expression régulière) option. Vous devez fournir les termes de recherche dans une chaîne entourée de guillemets verticaux “|” délimiteurs entre les termes de recherche:

sudo dmesg | grep -E "Mémoire|tty|dma"

Tout message mentionnant l'un des termes de recherche s'affiche dans la fenêtre du terminal.

Utiliser les niveaux de journal

Chaque message enregistré dans le tampon en anneau du noyau a un niveau attaché. Le niveau représente l'importance de l'information contenue dans le message. Les niveaux sont:

  • émerger: Le système ne peut pas être utilisé.
  • alerte: Des mesures doivent être prises immédiatement.
  • critique: Conditions critiques.
  • se tromper: Conditions d'erreur.
  • avertir: Conditions d'avertissement.
  • avis: État normal mais significatif.
  • Info: Informatif.
  • déboguer: Messages de niveau de débogage.

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

sudo dmesg -l info

Tous les messages répertoriés sont des messages d'information. Ils ne contiennent pas d'erreurs ou d'avertissements, uniquement les notifications utiles.

Combinez deux niveaux de journal ou plus dans une seule commande pour récupérer les messages de plusieurs niveaux de journal:

sudo dmesg -l debug,avis

La sortie de dmesg est une combinaison de messages de chaque niveau de journal:

Les catégories d'installations

Les dmesg les messages sont regroupés en catégories appelées “installations”. La liste des installations est:

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

Nous pouvons demander dmesg pour filtrer votre sortie pour afficher uniquement les messages sur une installation spécifique. Pour le faire, nous devons utiliser le -f (installation) option:

démon sudo dmesg -f

dmesg répertorie tous les messages liés aux démons dans la fenêtre du terminal.

Comment nous avons fait avec les niveaux, Nous pouvons demander dmesg pour répertorier les messages de plusieurs installations à la fois:

sudo dmesg -f syslog, démon

Le résultat est une combinaison de messages de journal syslog et démon.

Combiner installation et niveau

Les -x (décoder) option 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 peuvent être vus au début de chaque ligne:

La première section en surbrillance est un message de la fonction “noyau” avec un niveau de “avis”. La deuxième section en surbrillance est un message de la fonction “noyau” avec un niveau de “informations”.

Ça c'est génial, mais pourquoi?

En peu de mots, trouver à redire.

Si vous rencontrez des problèmes avec un élément matériel qui n'est pas reconnu ou ne se comporte pas correctement, dmesg peut éclairer le sujet.

  • Utiliser dmesg revoir les messages de la plus haute niveau à travers chaque niveau inférieur, rechercher des erreurs ou des avertissements qui mentionnent l'élément matériel ou qui peuvent être liés au problème.
  • Utiliser dmesg rechercher toute mention du installations pour voir s'ils contiennent des informations utiles.
  • Tube dmesg par grep et recherche liés chaînes ou identifiants tels que le fabricant du produit ou les numéros de modèle.
  • Tube dmesg par grep et recherche termes génériques Quoi “GPU” O “stockage”, ou des termes comme “Erreur”, “échoué” O “être incapable”.
  • Utilisez le --follow option et horloge dmesg messages en temps réel.

Bonne chasse.

setTimeout(fonction(){
!fonction(F,b,e,v,m,t,s)
{si(f.fbq)revenir;n=f.fbq=fonction(){n.callMethod?
n.callMethod.apply(m,arguments):n.queue.push(arguments)};
si(!f._fbq)f._fbq=n;n.push=n;n.chargé=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertAvant(t,s) } (window, document,'scénario',
'https://connect.facebook.net/en_US/fbevents.js’);
fbq('init', « 335401813750447 »);
fbq('Piste', « Page View »);
},3000);

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.