GNU/Linux >> Tutoriels Linux >  >> Linux

Outils Linux :faire passer le message avec dmesg

Le dmesg La commande est l'un de ces outils de dépannage facilement oubliés qui devrait rester au sommet de votre arsenal d'administrateur système. Il contient tellement d'informations sur votre système que dmesg devrait être le premier endroit où vous regardez quand quelque chose ne va pas. La sortie de dmesg est long, comme vous pouvez le voir par vous-même si vous le saisissez à une invite de commande, car il rapporte des informations de tous les aspects de votre système lorsqu'il n'y a pas de messages d'erreur, autres que ceux qui peuvent apparaître au démarrage.

Formellement, dmesg imprime ou contrôle le tampon circulaire du noyau. L'action par défaut est d'afficher tous les messages de ce tampon.

Pour référence et comparaison futures, le meilleur moment pour consulter dmesg est juste après le démarrage. J'envoie habituellement dmesg informations dans un fichier texte à l'aide d'une commande telle que la suivante :

$ dmesg > dmesg.`date +%m.%d.%Y`.txt

Cette commande crée un fichier texte nommé dmesg.12.11.2019.txt . Entre la date de création du fichier et le prochain démarrage, vous pouvez vérifier les nouveaux messages générés par le noyau.

Les messages post-démarrage possibles incluent des erreurs système, des erreurs de périphérique et des informations sur tout périphérique USB que quelqu'un pourrait brancher. Par exemple, le code dmesg suivant des informations sont apparues après l'insertion d'une clé USB :

[ 9189.631808] usb 1-1: new full-speed USB device number 2 using ohci-pci
[ 9189.909896] ohci-pci 0000:00:06.0: frame counter not updating; disabled
[ 9189.909958] ohci-pci 0000:00:06.0: HC died; cleaning up
[ 9194.910072] usb usb1-port1: attempt power cycle

Pour voir une liste complète des messages liés à l'USB, émettez le dmesg commande et grep pour usb :

$ dmesg |grep -i usb
[    0.052580] ACPI: bus type USB registered
[    0.052594] usbcore: registered new interface driver usbfs
[    0.052598] usbcore: registered new interface driver hub
[    0.052605] usbcore: registered new device driver usb
[    0.414901] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.414907] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.415398] ohci-pci 0000:00:06.0: new USB bus registered, assigned bus number 1
[    0.468262] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.18
[    0.468264] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.468266] usb usb1: Product: OHCI PCI host controller
[    0.468268] usb usb1: Manufacturer: Linux 4.18.0-80.el8.x86_64 ohci_hcd
[    0.468269] usb usb1: SerialNumber: 0000:00:06.0
[    0.468454] hub 1-0:1.0: USB hub found
[    0.468842] uhci_hcd: USB Universal Host Controller Interface driver
[    0.468885] usbcore: registered new interface driver usbserial_generic
[    0.468889] usbserial: USB Serial support registered for generic
[    0.470765] usbcore: registered new interface driver usbhid
[    0.470765] usbhid: USB HID core driver
[ 9189.631808] usb 1-1: new full-speed USB device number 2 using ohci-pci
[ 9194.910072] usb usb1-port1: attempt power cycle

Comme vous pouvez le voir, j'ai utilisé le grep commande avec le -i option donc il ignore la casse et je verrai tout ce qui est associé aux périphériques USB indépendamment de cela (Usb , usb , ou USB ). Cette pratique convient à tous les sous-systèmes ou filtres que vous souhaitez utiliser. Ignorez toujours la casse de votre filtre.

Par exemple, pour voir tous les disques (périphériques blocs) connectés à votre système, utilisez la commande suivante :

$ dmesg |grep -i sd
[    0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-80.el8.x86_64 root=UUID=f695f641-e489-4674-afd8-8f354533811d ro crashkernel=auto rhgb quiet
[    0.000000] ACPI: RSDP 0x00000000000E0000 000024 (v02 VBOX  )
[    0.000000] ACPI: XSDT 0x000000003FFF0030 00003C (v01 VBOX   VBOXXSDT 00000001 ASL  00000061)
[    0.000000] ACPI: DSDT 0x000000003FFF0470 0022EA (v02 VBOX   VBOXBIOS 00000002 INTL 20100528)
[    0.000000] ACPI: SSDT 0x000000003FFF02A0 0001CC (v01 VBOX   VBOXCPUT 00000002 INTL 20100528)
[    0.000000] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-80.el8.x86_64 root=UUID=f695f641-e489-4674-afd8-8f354533811d ro crashkernel=auto rhgb quiet
[    1.545750] sd 2:0:0:0: [sda] 33554432 512-byte logical blocks: (17.2 GB/16.0 GiB)
[    1.545756] sd 2:0:0:0: [sda] Write Protect is off
[    1.545757] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.545764] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.546960]  sda: sda1 sda2
[    1.547316] sd 2:0:0:0: [sda] Attached SCSI disk
[    1.975545] XFS (sda2): Mounting V5 Filesystem
[    2.092251] XFS (sda2): Starting recovery (logdev: internal)
[    2.137813] XFS (sda2): Ending recovery (logdev: internal)
[    3.993219] sd 2:0:0:0: Attached scsi generic sg1 type 0
[    5.909006] XFS (sda1): Mounting V5 Filesystem
[    5.959833] XFS (sda1): Starting recovery (logdev: internal)
[    5.962287] XFS (sda1): Ending recovery (logdev: internal)

Les résultats affichent plus qu'une simple liste de périphériques de bloc, vous pouvez donc filtrer davantage vos résultats en spécifiant le système de fichiers, XFS dans ce cas :

$ dmesg |grep -i xfs
[    1.965741] SGI XFS with ACLs, security attributes, no debug enabled
[    1.975545] XFS (sda2): Mounting V5 Filesystem
[    2.092251] XFS (sda2): Starting recovery (logdev: internal)
[    2.137813] XFS (sda2): Ending recovery (logdev: internal)
[    5.909006] XFS (sda1): Mounting V5 Filesystem
[    5.959833] XFS (sda1): Starting recovery (logdev: internal)
[    5.962287] XFS (sda1): Ending recovery (logdev: internal)

L'utilisation du -i l'option ici est superflue mais je l'inclus toujours juste au cas où il y aurait des résultats que je ne verrais pas autrement. J'utilise la touche fléchée vers le haut pour rejouer ma dernière commande (une fonctionnalité Bash des plus excellentes) et juste revenir en arrière sur la dernière chose que j'ai recherchée et la remplacer par mon nouveau mot-clé, donc une fois que j'ai entré la commande, je n'ai jamais à m'embêter avec quoi que ce soit sauf ce que je recherche. Aucun mal n'est fait de toute façon.

Si vous souhaitez voir si votre système distant est équipé d'un lecteur de CD/DVD, essayez cette commande :

$ dmesg |grep -i cd
[    0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[    0.414901] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.414907] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.468262] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.18
[    0.468268] usb usb1: Manufacturer: Linux 4.18.0-80.el8.x86_64 ohci_hcd
[    0.468842] uhci_hcd: USB Universal Host Controller Interface driver
[    1.328589] ata2.00: ATAPI: VBOX CD-ROM, 1.0, max UDMA/133
[    1.329773] scsi 1:0:0:0: CD-ROM            VBOX     CD-ROM           1.0  PQ: 0 ANSI: 5
[    1.577662] cdrom: Uniform CD-ROM driver Revision: 3.20
[    1.578616] sr 1:0:0:0: Attached scsi CD-ROM sr0

Les quatre dernières lignes affichent des informations sur le lecteur de CD-ROM. Bien que le lecteur de CD-ROM soit virtuel sur ce système, si le complément matériel de la machine virtuelle l'inclut, le lecteur peut charger des fichiers image ISO comme s'il s'agissait d'une image amorçable sur un support physique.

Le dmesg la commande n'est pas grande et tape-à-l'œil. Il ne fait pas beaucoup de choses ou a une longue liste d'options. Au lieu de cela, il est élégant dans sa simplicité et aussi pratique que votre protecteur de poche. Plutôt qu'après coup, vous devriez prendre l'habitude d'exécuter dmesg régulièrement sur vos systèmes. Et, quand quelque chose ne va pas, relancez-le pour savoir ce que le noyau sait du problème. Vous pourriez vous épargner quelques soucis et quelques étapes de dépannage. Vous pouvez également ressembler à un héros pour vos collègues et votre direction pour avoir trouvé le problème si rapidement. N'oubliez pas que le temps c'est de l'argent et que vous essayez de l'économiser et le jour.

Vous voulez essayer Red Hat Enterprise Linux ? Téléchargez-le maintenant gratuitement.


Linux
  1. Planification des tâches avec la commande Linux cron

  2. Premiers pas avec la commande Linux tac

  3. Premiers pas avec la commande Linux cat

  4. Premiers pas avec PostgreSQL sous Linux

  5. Premiers pas avec SSH sous Linux

Premiers pas avec GIT sous Linux

Apprendre LVM sur Linux avec des outils graphiques

Premiers pas avec le système d'exploitation Linux

Outils Linux :examen du matériel dans le terminal avec dmidecode

Débuter avec Linux Mint ? Focus sur ces trois outils

Sécurisez Linux avec le fichier Sudoers