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, Oui 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), Oui 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.
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.
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” Oui “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.
- poster: 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
pargrep
et recherche liés chaînes ou identifiants tels que le fabricant du produit ou les numéros de modèle. - Tube
dmesg
pargrep
et recherche termes génériques Quoi “GPU” O “stockage”, ou des termes comme “Erreur”, “échoué” O “être incapable”. - Utilisez le
--follow
option et horlogedmesg
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);