Le noyau Linux est le cœur du système d'exploitation qui contrôle l'accès aux ressources système, telles que le processeur, les périphériques d'E/S, la mémoire physique et les systèmes de fichiers. Le noyau écrit divers messages dans le tampon en anneau du noyau pendant le processus de démarrage et lorsque le système est en cours d'exécution. Ces messages comprennent diverses informations sur le fonctionnement du système.
Le tampon en anneau du noyau est une partie de la mémoire physique qui contient les messages du journal du noyau. Il a une taille fixe, ce qui signifie qu'une fois le tampon plein, les anciens enregistrements de journaux sont écrasés.
Le dmesg
L'utilitaire de ligne de commande est utilisé pour imprimer et contrôler le tampon circulaire du noyau sous Linux et d'autres systèmes d'exploitation de type Unix. Il est utile pour examiner les messages de démarrage du noyau et déboguer les problèmes liés au matériel.
Dans ce tutoriel, nous couvrirons les bases du dmesg
commande.
Utilisation de dmesg
Commande #
La syntaxe du dmesg
commande est la suivante :
dmesg [OPTIONS]
Lorsqu'il est invoqué sans aucune option dmesg
écrit tous les messages du tampon circulaire du noyau sur la sortie standard :
dmesg
Par défaut, tous les utilisateurs peuvent exécuter le dmesg
commande. Cependant, sur certains systèmes, l'accès à dmesg
peut être restreint pour les utilisateurs non root. Dans cette situation, lors de l'appel de dmesg
vous obtiendrez un message d'erreur comme ci-dessous :
dmesg: read kernel buffer failed: Operation not permitted
Le paramètre du noyau kernel.dmesg_restrict
spécifie si les utilisateurs non privilégiés peuvent utiliser dmesg
pour afficher les messages du tampon de journalisation du noyau. Pour supprimer les restrictions, réglez-le sur zéro :
sudo sysctl -w kernel.dmesg_restrict=0
Habituellement, la sortie contient beaucoup de lignes d'informations, donc seule la dernière partie de la sortie est visible. Pour voir une page à la fois, dirigez la sortie vers un utilitaire de téléavertisseur tel que less
ou more
:
dmesg --color=always | less
Le --color=always
est utilisé pour préserver la sortie colorée.
Si vous souhaitez filtrer les messages du tampon, utilisez grep
. Par exemple, pour afficher uniquement les messages liés à l'USB, vous devez saisir :
dmesg | grep -i usb
dmesg
lit les messages générés par le noyau depuis le /proc/kmsg
fichier virtuel. Ce fichier fournit une interface avec le tampon en anneau du noyau et ne peut être ouvert que par un seul processus. Si syslog
processus est en cours d'exécution sur votre système et vous essayez de lire le fichier avec cat
, ou less
, la commande se bloquera.
Le syslog
le démon vide les messages du noyau dans /var/log/dmesg
, vous pouvez donc également utiliser ce fichier journal :
cat /var/log/dmesg
Formater dmesg
Sortie #
Le dmesg
La commande fournit un certain nombre d'options qui vous aident à formater et à filtrer la sortie.
Une des options les plus utilisées de dmesg
est -H
(--human
), qui active la sortie lisible par l'homme. Cette option dirige la sortie de la commande vers un pager :
dmesg -H
Pour imprimer des horodatages lisibles par l'homme, utilisez le -T
(--ctime
) :
dmesg -T
[Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
Le format des horodatages peut également être défini à l'aide du --time-format <format>
option, qui peut être ctime, reltime, delta, notime ou iso. Par exemple, pour utiliser le format delta, vous saisiriez :
dmesg --time-format=delta
Vous pouvez également combiner deux options ou plus :
dmesg -H -T
Pour regarder la sortie du dmesg
commande en temps réel utilisez le -w
(--follow
) :
dmesg --follow
Filtrage dmesg
Sortie #
Vous pouvez restreindre le dmesg
sortie vers des installations et des niveaux donnés.
La fonction représente le processus qui a créé le message. dmesg
prend en charge les fonctions de journalisation suivantes :
kern
- messages du noyauuser
- messages au niveau de l'utilisateurmail
- système de messageriedaemon
- démons systèmeauth
- messages de sécurité/d'autorisationsyslog
- messages syslogd interneslpr
- sous-système d'imprimante en lignenews
- sous-système de nouvelles du réseau
Le -f
(--facility <list>
) vous permet de limiter la sortie à des installations spécifiques. L'option accepte une ou plusieurs installations séparées par des virgules.
Par exemple, pour afficher uniquement les messages du noyau et des démons système, vous utiliseriez :
dmesg -f kern,daemon
Chaque message de journal est associé à un niveau de journal qui indique l'importance du message. dmesg
prend en charge les niveaux de journalisation suivants :
emerg
- le système est inutilisablealert
- des mesures doivent être prises immédiatementcrit
- conditions critiqueserr
- conditions d'erreurwarn
- conditions d'avertissementnotice
- état normal mais significatifinfo
- informatifdebug
- messages de niveau de débogage
Le -l
(--level <list>
) limite la sortie à des niveaux définis. L'option accepte un ou plusieurs niveaux séparés par des virgules.
La commande suivante affiche uniquement les messages d'erreur et critiques :
dmesg -l err,crit
Effacer le tampon circulaire #
Le -C
(--clear
) vous permet d'effacer le tampon circulaire :
sudo dmesg -C
Seuls root ou les utilisateurs disposant des privilèges sudo peuvent effacer le tampon.
Pour imprimer le contenu du tampon avant d'effacer, utilisez le -c
(--read-clear
) :
sudo dmesg -c
Si vous souhaitez enregistrer le dmesg
actuel se connecte à un fichier avant de l'effacer, redirige la sortie vers un fichier :
dmesg > dmesg_messages
Conclusion #
Le dmesg
La commande vous permet d'afficher et de contrôler le tampon circulaire du noyau. Cela peut être très utile lors du dépannage de problèmes de noyau ou de matériel.
Tapez man dmesg
dans votre terminal pour des informations sur tous les dmesg
disponibles options.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.