Qu'est-ce que dmesg ?
dmesg est l'abréviation de 'display message' ou 'driver message' et affiche les messages stockés dans le tampon circulaire (Ring Buffer) du noyau Linux. Il montre chronologiquement comment le matériel a été reconnu, comment les pilotes ont été chargés, ou quelles erreurs se sont produites depuis le démarrage du système jusqu'à présent.
Fonctionnalités et utilisations clés
dmesg est utilisé pour diagnostiquer ce qui se passe au niveau le plus bas du système (le noyau).
- Vérification des messages de démarrage: Affiche tous les messages du noyau émis au démarrage du système.
- Diagnostic matériel: Vérifie les journaux lorsque de nouveau matériel (USB, disque, etc.) est connecté ou retiré.
- Erreurs de pilote: Traque les causes des échecs de chargement de pilote ou des erreurs de niveau noyau (Kernel Panic).
- Tampon circulaire: La taille du tampon étant fixe, les anciens journaux sont écrasés par les nouveaux.
Options principales (Shell)
dmesg est souvent utilisé en combinaison avec d'autres commandes (grep, less) via un pipe (|), mais il possède également ses propres options utiles.
1. Format de sortie et heure
2. Filtrage et surveillance en temps réel
3. Contrôle du tampon/console (Attention requise)
Commande générée :
Essayez de combiner les commandes.
Description:
`dmesg` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples de scénarios d'utilisation (Shell)
dmesg est souvent utilisé avec grep pour filtrer uniquement les informations souhaitées.
Afficher tous les messages (pagination)
dmesg | less
Utilisation la plus basique. Faites défiler facilement avec less.
Vérifier les nouveaux messages en temps réel (lisible)
dmesg -wH
Combine -w (temps réel) et -H (heure lisible par l'homme).
Filtrer uniquement les messages liés à l'USB
dmesg | grep -i usb
L'option -i de grep ignore la casse.
Filtrer les messages liés aux disques (SATA/NVMe)
dmesg | grep -iE 'sd[a-z]|nvme'
Recherche les journaux contenant 'sd[a-z]' ou 'nvme' avec grep -E (expressions régulières étendues).
Filtrer uniquement les erreurs (Error) ou avertissements (Warn)
dmesg -H -l err,warn
Spécifie les niveaux de journal avec l'option -l.
Afficher uniquement les 10 dernières lignes de messages
dmesg | tail -n 10
Combine avec tail pour vérifier rapidement les messages récents.
Afficher avec les tags facility/level
dmesg -xT | less
L'option -x décode les tags facility/level pour faciliter la compréhension.
Enregistrer les journaux dans un fichier
dmesg -T > ~/dmesg-$(date +%F-%H%M).log
Conserve l'intégralité du dmesg juste après le démarrage.
Installation
dmesg est inclus dans le paquet util-linux et est fourni par défaut dans la plupart des distributions Linux.
Installé par défaut
Aucune installation séparée n'est requise. S'il est absent, installez le paquet 'util-linux' de votre distribution.
Astuces & Précautions
dmesg vs journalctl
- Environnement systemd: Sur les systèmes systemd récents, il est possible de consulter les journaux système de manière unifiée, au-delà du niveau de dmesg, en utilisant 'journalctl -k' (journaux du noyau) ou 'journalctl -b' (journaux de ce démarrage).
- Format de l'heure: L'heure par défaut de la sortie dmesg est [temps écoulé depuis le démarrage (secondes)]. Pour voir l'heure réelle, utilisez les options '-H' ou '-T'.
- Écrasement du tampon: En raison de la nature du tampon circulaire, les anciens messages peuvent disparaître. Si vous avez besoin de conserver les journaux de démarrage initial, vérifiez avec 'journalctl -b 0' ou enregistrez la sortie de dmesg dans un fichier.
- Permissions/Sécurité: Certaines distributions limitent l'accès de l'utilisateur normal à dmesg via '/proc/sys/kernel/dmesg_restrict=1'. Dans ce cas, utilisez 'sudo dmesg' ou 'sudo journalctl -k'.
- Effacer les journaux (-c, -C): 'dmesg -c' et '-C' sont utiles pour le débogage, mais une fois effacés, les journaux ne peuvent pas être récupérés. Utilisez-les avec prudence dans un environnement de production.