GNU/Linux >> Tutoriels Linux >  >> Linux

10 conseils sur la commande 'dmesg' pour Linux Geeks

dmesg La commande est utilisée pour afficher les messages liés au noyau sur les systèmes de type Unix. dmesg signifie "afficher le message ou afficher le pilote “. La commande dmesg récupère ses données en lisant le tampon circulaire du noyau. Lors du dépannage sur les systèmes Linux, la commande dmesg devient très pratique, elle peut nous aider à identifier les erreurs et les avertissements liés au matériel, en dehors de cela, elle peut imprimer des messages liés au démon sur votre écran.

Dans cet article, nous aborderons 10 astuces utiles sur la commande dmesg pour les administrateurs Linux ou les geeks. Vous trouverez ci-dessous la syntaxe de la commande dmesg,

# dmesg {options}

Voici les options qui peuvent être utilisées dans la commande dmesg

Passons maintenant à la partie conseils,

1. Afficher tous les messages du tampon circulaire du noyau

Ouvrez le terminal et tapez la commande "dmesg", puis appuyez sur Entrée. Sur votre écran, vous obtiendrez tous les messages du tampon circulaire du noyau.

~]# dmesg

La commande dmesg imprimera tous les messages mais vous ne verrez que le dernier message qui tient à l'écran, si vous voulez faire l'analyse de tous les journaux et les afficher par page, utilisez la commande less ou more,

~]# dmesg | less

La sortie de la commande dmesg serait quelque chose comme ci-dessous,

2. Afficher les messages liés à la RAM, au disque dur, aux clés USB et aux ports série

Dans la sortie de la commande dmesg, nous pouvons rechercher les messages liés à la RAM, au disque dur, au lecteur USB et aux ports série.

~]# dmesg | grep -i memory
~]# dmesg | grep -i dma
~]# dmesg | grep -i usb
~]# dmesg | grep -i tty

Ces commandes ci-dessus peuvent être fusionnées en une seule commande à l'aide de plusieurs options grep (-E), des exemples sont présentés ci-dessous,

~]# dmesg | grep -E "memory|dma|usb|tty"

La sortie serait quelque chose comme ci-dessous :

[    4.100608] usb 4-1: SerialNumber: serial
[    4.102288] [TTM] Zone  kernel: Available graphics memory: 49438090 kiB
[    4.102294] [TTM] Zone   dma32: Available graphics memory: 2097152 kiB
[    4.102891] input: Logitech USB Keyboard as \ 
/devices/pci0000:00/0000:00:1d.2/usb8/8-1/8-1:1.0/input/input2
[    4.109905] input: American Megatrends Inc. \ 
Virtual Keyboard and Mouse as \
/devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/input/input3
[    4.153575] hid-generic 0003:046D:C31C.0001: \
input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Keyboard] \
 on usb-0000:00:1d.2-1/input0
[    4.199642] input: Logitech USB Keyboard as \
/devices/pci0000:00/0000:00:1d.2/usb8/8-1/8-1:1.1/input/input4
[    4.204832] hid-generic 0003:046B:FF10.0002: \ 
input,hidraw1: USB HID v1.10 Keyboard [American Megatrends Inc. \ 
Virtual Keyboard and Mouse] on usb-0000:00:1a.1-1/input0
[    4.211855] input: American Megatrends Inc. Virtual Keyboard and \
 Mouse as /devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.1/input/input5
[    4.239313] ata1: SATA max UDMA/133 cmd 0x8138 ctl 0x814c bmdma 0x8110 irq 19
[    4.239317] ata2: SATA max UDMA/133 cmd 0x8130 ctl 0x8148 bmdma 0x8118 irq 19
[    4.255839] hid-generic 0003:046D:C31C.0003: input,hidraw2: \
 USB HID v1.10 Device [Logitech USB Keyboard] on usb-0000:00:1d.2-1/input1
[    4.256191] hid-generic 0003:046B:FF10.0004: input,hidraw3:\
 USB HID v1.10 Mouse [American Megatrends Inc. Virtual Keyboard and \ 
Mouse] on usb-0000:00:1a.1-1/input1
[    4.392050] ata3: SATA max UDMA/133 cmd 0x8128 ctl 0x8144 bmdma 0x80f0 irq 21
[    4.392051] ata4: SATA max UDMA/133 cmd 0x8120 ctl 0x8140 bmdma 0x80f8 irq 21
[   19.125903] ioatdma: Intel(R) QuickData Technology Driver 4.00
[   19.126493] ioatdma 0000:00:16.0: irq 140 for MSI/MSI-X
[   19.128248] ioatdma 0000:00:16.1: irq 142 for MSI/MSI-X
[   19.129953] ioatdma 0000:00:16.2: irq 144 for MSI/MSI-X
[   19.131926] ioatdma 0000:00:16.3: irq 146 for MSI/MSI-X
[   19.134235] ioatdma 0000:00:16.4: irq 147 for MSI/MSI-X
[   19.135688] ioatdma 0000:00:16.5: irq 148 for MSI/MSI-X
[   19.137522] ioatdma 0000:00:16.6: irq 149 for MSI/MSI-X
[   19.140174] ioatdma 0000:00:16.7: irq 150 for MSI/MSI-X
[   19.141931] ioatdma 0000:80:16.0: irq 152 for MSI/MSI-X
[   19.161974] ioatdma 0000:80:16.1: irq 154 for MSI/MSI-X
[   19.167511] ioatdma 0000:80:16.2: irq 156 for MSI/MSI-X
[   19.169293] ioatdma 0000:80:16.3: irq 158 for MSI/MSI-X
[   19.170821] ioatdma 0000:80:16.4: irq 159 for MSI/MSI-X
[   19.174764] ioatdma 0000:80:16.5: irq 160 for MSI/MSI-X
[   19.176360] ioatdma 0000:80:16.6: irq 161 for MSI/MSI-X
[   19.177984] ioatdma 0000:80:16.7: irq 162 for MSI/MSI-X
[ 4519.415988] usb 8-1: USB disconnect, device number 2
~]#

3. Lire et effacer les journaux dmesg à l'aide de l'option (-C)

Si vous souhaitez effacer les journaux dmesg après les avoir lus, vous pouvez utiliser l'option -C dans la commande dmesg,

~]# dmesg -C

4. Afficher des messages colorés (sortie de la commande dmesg)

Utilisez l'option "-L" dans la commande dmesg si vous souhaitez imprimer les messages colorés,

~]# dmesg -L

5. Limitez la sortie dmesg à une installation spécifique telle que le démon

Si vous souhaitez limiter la sortie dmesg à une installation spécifique telle que daemon, utilisez l'option "–facility=daemon " dans la commande dmesg,

~]# dmesg --facility=daemon

La sortie de la commande ci-dessus serait quelque chose comme ci-dessous,

[    3.680902] systemd[1]: systemd 219 running in system mode. \
\  (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP \ 
+LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    3.682017] systemd[1]: Detected architecture x86-64.
[    3.682022] systemd[1]: Running in initial RAM disk.
[    3.682060] systemd[1]: Set hostname to <controller01.egi.ericsson.com>.
[    3.734025] systemd[1]: Reached target Timers.
[    3.734041] systemd[1]: Starting Timers.
[    3.734219] systemd[1]: Created slice -.slice.
[    3.734231] systemd[1]: Starting -.slice.
[    3.736741] systemd[1]: Starting Apply Kernel Variables...
[    3.736792] systemd[1]: Listening on udev Kernel Socket.
[    3.736807] systemd[1]: Starting udev Kernel Socket.
[    3.736823] systemd[1]: Reached target Sockets.
[    3.736832] systemd[1]: Starting Sockets.
[    3.737418] systemd[1]: Starting Setup Virtual Console...
[    3.737488] systemd[1]: Started dracut ask for additional cmdline parameters.
[    3.738211] systemd[1]: Starting dracut cmdline hook...
[    3.738736] systemd[1]: Started Create list of required static \ 
device nodes for the current kernel.
[    3.740196] systemd[1]: Started Apply Kernel Variables.
[    3.743253] systemd[1]: Starting Create Static Device Nodes in /dev...
[    3.746693] systemd[1]: Started Create Static Device Nodes in /dev.
[    3.814248] systemd[1]: Started Setup Virtual Console.
[    3.822146] systemd[1]: Started Journal Service.
[   16.072365] systemd[1]: Inserted module 'ip_tables'
[[email protected] ~]#

Voici les fonctionnalités de journalisation prises en charge dans la commande dmesg,

  • kern
  • utilisateur
  • courrier
  • démon
  • authentification
  • syslog
  • lpr
  • actualités

6. Restreindre la sortie de la commande dmesg à une liste spécifique de niveaux

Voici les niveaux de journalisation spécifiques pris en charge par la commande dmesg,

  • urgence
  • alerte
  • critique
  • erre
  • avertir
  • avis
  • infos
  • déboguer

Supposons que nous voulions afficher les journaux liés aux erreurs et aux avertissements, puis utiliser l'option "–level" suivie de niveaux comme err &warn, l'exemple est illustré ci-dessous

~]# dmesg --level=err,warn
----------------------------------
[1341929.334323] iSCSI Login negotiation failed.
[1491798.215987] rx_data returned 0, expecting 48.
[1491798.217027] iSCSI Login negotiation failed.
[1494278.360062] rx_data returned 0, expecting 48.
[1494278.361265] iSCSI Login negotiation failed.
[1557620.564093] blk_update_request: critical target error, dev dm-6, \ 
sector 2153
[1557620.565432] dm-23: WRITE SAME failed. Manually zeroing.
[1558518.963985] Unable to load target_core_user
[1559841.691841] TARGET_CORE[iSCSI]: Expected Transfer Length: \ 
264 does not match SCSI CDB Length: 8 for SAM Opcode: 0x12
[1559841.691953] scsi 10:0:0:0: alua: not attached
[1559860.013693] kvm [72955]: vcpu0 unhandled rdmsr: 0x1ad
[1560386.614083] TARGET_CORE[iSCSI]: Expected Transfer Length: \ 
264 does not match SCSI CDB Length: 8 for SAM Opcode: 0x12
[1560386.614172] scsi 11:0:0:0: alua: not attached
[1608828.924794] rx_data returned 0, expecting 48.
[1608828.925904] iSCSI Login negotiation failed.
[1787664.206542] rx_data returned 0, expecting 48.
[1787664.207809] iSCSI Login negotiation failed.
[1800235.169914] rx_data returned 0, expecting 48.
[1800235.171012] iSCSI Login negotiation failed.
[2051176.431584] ata1.01: failed to resume link (SControl 0)
[2051858.493155] ata1.01: failed to resume link (SControl 0)
………………………………………………………………………………
#

7. Activer les horodatages dans les journaux dmesg

Il peut y avoir des scénarios où nous voulons activer les horodatages dans dmesg, cela peut être facilement réalisé en utilisant l'option "-T" dans la commande dmesg.

~]# dmesg -T
……………………………………………
Wed May  9 12:20:36 2018] rx_data returned 0, expecting 48.
[Wed May  9 12:20:36 2018] iSCSI Login negotiation failed.
[Thu May 10 03:31:36 2018] httpd[63827]: segfault at 8 ip \
 00007f1ef7166c50 sp 00007f1eee417db0 error 4 in \ 
libpython2.7.so.1.0[7f1ef706c000+178000]
[Thu May 10 03:31:37 2018] httpd[57146]: segfault at 8 ip \ 
00007f1ef7166c50 sp 00007f1eee417db0 error 4 in \ 
libpython2.7.so.1.0[7f1ef706c000+178000]
[Sat May 12 10:02:56 2018] ata1.00: hard resetting link
[Sat May 12 10:02:56 2018] ata1.01: hard resetting link
[Sat May 12 10:02:57 2018] ata1.01: failed to resume link (SControl 0)
[Sat May 12 10:02:57 2018] ata1.00: SATA link up 1.5 Gbps \
(SStatus 113 SControl 300)
[Sat May 12 10:02:57 2018] ata1.01: SATA link down (SStatus 0 SControl 0)
[Sat May 12 10:02:57 2018] ata1.01: link offline, clearing class 3 to NONE
[Sat May 12 10:02:57 2018] ata1.00: configured for UDMA/100
[Sat May 12 10:02:57 2018] ata1: EH complete
[Sat May 12 10:14:18 2018] ata1.00: hard resetting link
[Sat May 12 10:14:18 2018] ata1.01: hard resetting link
[Sat May 12 10:14:19 2018] ata1.01: failed to resume link (SControl 0)
[Sat May 12 10:14:19 2018] ata1.00: SATA link up 1.5 Gbps \
(SStatus 113 SControl 300)
[Sat May 12 10:14:19 2018] ata1.01: SATA link down (SStatus 0 SControl 0)
[Sat May 12 10:14:19 2018] ata1.01: link offline, clearing class 3 to NONE
[Sat May 12 10:14:19 2018] ata1.00: configured for UDMA/100
[Sat May 12 10:14:19 2018] ata1: EH complete
…………………………………………………

Au cas où, si vous voulez des timestmaps avec la fonction de décodage et les niveaux dans la sortie de la commande dmesg, utilisez "-Tx ",

~]# dmesg -Tx

8. Surveillez les journaux dmesg en temps réel à l'aide de l'option "-follow"

Utilisez l'option '–follow' dans la commande dmesg pour afficher les journaux dmesg en temps réel, l'exemple est illustré ci-dessous,

~]# dmesg --follow

Si vous souhaitez activer les horodatages avec la surveillance en temps réel de dmesg, utilisez la commande suivante,

~]# dmesg -Tx --follow

9. Afficher le tampon de message brut à l'aide de l'option '-r'

Utilisez l'option '-r' dans la commande dmesg pour afficher le tampon de message brut, l'exemple est illustré ci-dessous,

~]# dmesg -r

10.Forcer la commande dmesg à utiliser syslog

Il peut y avoir des situations où nous voulons que dmesg obtienne ses données de syslog plutôt que de /dev/kmsg. Ceci peut être facilement réalisé en utilisant l'option "-S ", l'exemple est illustré ci-dessous :

~]# dmesg -S

Les journaux de commande dmesg sont stockés dans le fichier "/var/log/dmesg"

C'est tout ce tutoriel, j'espère que ces conseils vous aideront à mieux comprendre la commande dmesg.

Lire aussi  :20 exemples de commandes ps pour surveiller les processus Linux


Linux
  1. 3 conseils pour imprimer avec Linux

  2. 8 conseils pour la ligne de commande Linux

  3. Apprivoiser la commande tar :conseils pour gérer les sauvegardes sous Linux

  4. Conseils de ligne de commande Linux pour augmenter la productivité

  5. 6 Awesome Linux cd command Hacks – Productivity Tip#3 for Geeks

Explication de la commande Linux rm pour les débutants (8 exemples)

Tutoriel Linux ln Command pour débutants (5 exemples)

Tutoriel de commande Linux nl pour les débutants (7 exemples)

Tutoriel de commande Linux nm pour les débutants (10 exemples)

Tutoriel de commande Linux OD pour les débutants (6 exemples)

Tutoriel de commande Linux dmesg pour les débutants (5 exemples)