GNU/Linux >> Linux Esercitazione >  >> Linux

10 suggerimenti sul comando 'dmesg' per Linux Geeks

dmesg comando viene utilizzato per visualizzare i messaggi relativi al kernel su sistemi simili a Unix. dmesg sta per "visualizza messaggio o display driver “. Il comando dmesg recupera i suoi dati leggendo il buffer dell'anello del kernel. Durante la risoluzione dei problemi sui sistemi Linux, il comando dmesg diventa molto utile, può aiutarci a identificare errori e avvisi relativi all'hardware, oltre a questo può stampare messaggi relativi ai daemon sullo schermo.

In questo articolo tratteremo 10 suggerimenti utili sul comando dmesg per amministratori Linux o fanatici, Di seguito è riportata la sintassi del comando dmesg,

# dmesg {opzioni}

Di seguito sono elencate le opzioni che possono essere utilizzate nel comando dmesg

Passiamo ora alla parte dei suggerimenti,

1. Visualizza tutti i messaggi dal buffer dell'anello del kernel

Apri il terminale e digita il comando 'dmesg', quindi premi invio. Sul tuo schermo riceverai tutti i messaggi dal buffer dell'anello del kernel.

~]# dmesg

Il comando dmesg stamperà tutti i messaggi ma vedrai solo l'ultimo messaggio che si adatta allo schermo, se vuoi eseguire l'analisi di tutti i registri e visualizzarli come pagina saggia, usa il comando less o more,

~]# dmesg | less

L'output del comando dmesg sarebbe qualcosa come di seguito,

2. Visualizza messaggi relativi a RAM, disco rigido, unità USB e porte seriali

Nell'output del comando dmesg possiamo cercare i messaggi relativi a RAM, Hard disk, unità USB e porte seriali.

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

Questi comandi sopra possono essere uniti in un unico comando usando più opzioni grep (-E), gli esempi sono mostrati di seguito,

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

L'output sarebbe simile al seguente:

[    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. Leggi e cancella i registri dmesg usando l'opzione (-C)

Se vuoi cancellare i log di dmesg dopo averli letti, puoi usare l'opzione -C nel comando dmesg,

~]# dmesg -C

4. Visualizza messaggi colorati (output del comando dmesg)

Usa l'opzione '-L' nel comando dmesg se vuoi stampare i messaggi colorati,

~]# dmesg -L

5. Limita l'output di dmesg a una struttura specifica come il demone

Se desideri limitare l'output di dmesg a una struttura specifica come il demone, utilizza l'opzione "–facility=daemon ” nel comando dmesg,

~]# dmesg --facility=daemon

L'output del comando precedente sarebbe qualcosa di simile al seguente,

[    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] ~]#

Di seguito sono riportate le funzionalità di registro supportate nel comando dmesg,

  • nocciolo
  • utente
  • posta
  • demone
  • autorizzazione
  • registro di sistema
  • lpr
  • notizie

6. Limita l'output del comando dmesg a un elenco di livelli specifico

Di seguito sono riportati livelli di registro specifici supportati dal comando dmesg,

  • emerge
  • avviso
  • critico
  • err
  • avviso
  • avviso
  • informazioni
  • debug

Supponiamo di voler visualizzare i log relativi a errori e avvisi, quindi utilizzare l'opzione "–level" seguita da livelli come err &warning, l'esempio è mostrato di seguito

~]# 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. Abilita timestamp nei log di dmesg

Possono esserci alcuni scenari in cui vogliamo abilitare i timestamp in dmesg, questo può essere facilmente ottenuto utilizzando l'opzione "-T" nel comando  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
…………………………………………………

Nel caso, se desideri mappe orarie insieme alla funzione di decodifica e ai livelli nell'output del comando dmesg, usa "-Tx ” opzione,

~]# dmesg -Tx

8. Monitora i registri dmesg in tempo reale utilizzando l'opzione '–follow'

Usa l'opzione '–follow' nel comando dmesg per visualizzare i registri dmesg in tempo reale, l'esempio è mostrato di seguito,

~]# dmesg --follow

Se vuoi abilitare i timestamp lungo il monitoraggio in tempo reale di dmesg, usa il comando seguente,

~]# dmesg -Tx --follow

9. Visualizza il buffer dei messaggi non elaborati utilizzando l'opzione '-r'

Usa l'opzione '-r' nel comando dmesg per visualizzare il buffer dei messaggi non elaborati, l'esempio è mostrato di seguito,

~]# dmesg -r

10.Forza il comando dmesg per utilizzare syslog

Ci possono essere alcune situazioni in cui vogliamo che dmesg ottenga i suoi dati da syslog piuttosto che da /dev/kmsg. Questo può essere ottenuto facilmente utilizzando l'opzione "-S “, l'esempio è mostrato di seguito:

~]# dmesg -S

I log dei comandi dmesg sono archiviati nel file “/var/log/dmesg”

Questo è tutto da questo tutorial, spero che questi suggerimenti ti aiutino a capire il comando dmesg in un modo migliore.

Leggi anche :Esempi di comando da 20 ps per monitorare i processi Linux


Linux
  1. 3 consigli per la stampa con Linux

  2. 8 suggerimenti per la riga di comando di Linux

  3. Addomesticare il comando tar:suggerimenti per la gestione dei backup in Linux

  4. Suggerimenti per la riga di comando di Linux per aumentare la produttività

  5. 6 fantastici hack del comando cd di Linux – Suggerimento sulla produttività n. 3 per i geek

Spiegazione del comando Linux rm per principianti (8 esempi)

Tutorial sui comandi Linux ln per principianti (5 esempi)

Linux nl Command Tutorial per principianti (7 esempi)

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux dmesg Command Tutorial per principianti (5 esempi)