GNU/Linux >> Linux の 問題 >  >> Linux

Linuxオタク向けの「dmesg」コマンドに関する10のヒント

dmesg コマンドは、Unixライクなシステムでカーネル関連のメッセージを表示するために使用されます。 dmesgは、「メッセージの表示またはドライバーの表示」の略です。 「。 dmesgコマンドは、カーネルリングバッファを読み取ることによってデータを取得します。 Linuxシステムでトラブルシューティングを行う場合、dmesgコマンドは非常に便利ですが、ハードウェア関連のエラーや警告を特定するのに役立ちます。これとは別に、デーモン関連のメッセージを画面に出力できます。

この記事では、Linux管理者またはオタク向けのdmesgコマンドに関する10の役立つヒントを取り上げます。以下はdmesgコマンドの構文です

#dmesg {options}

以下は、dmesgコマンドで使用できるオプションです

さあ、ヒントの部分に飛び込みましょう。

1。カーネルリングバッファからのすべてのメッセージを表示する

ターミナルを開き、「dmesg」コマンドを入力して、Enterキーを押します。画面に、カーネルリングバッファからすべてのメッセージが表示されます。

~]# dmesg

dmesgコマンドはすべてのメッセージを出力しますが、画面に収まる最新のメッセージのみが表示されます。すべてのログを分析してページごとに表示する場合は、使用するコマンドの数を増減してください。

~]# dmesg | less

dmesgコマンドの出力は次のようになります

2。 RAM、ハードディスク、USBドライブ、シリアルポートに関連するメッセージを表示する

dmesgコマンドの出力では、RAM、ハードディスク、USBドライブ、およびシリアルポートに関連するメッセージを検索できます。

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

これらの上記のコマンドは、複数のgrepオプション(-E)を使用して単一のコマンドにマージできます。例を以下に示します。

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

出力は次のようになります:

[    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。 (-C)オプションを使用してdmesgログを読み取ってクリアする

読み取った後にdmesgログをクリアしたい場合は、dmesgコマンドでオプション-Cを使用できます

~]# dmesg -C

4。色付きのメッセージを表示する(dmesgコマンド出力)

色付きのメッセージを印刷する場合は、dmesgコマンドで「-L」オプションを使用します。

~]# dmesg -L

5。 dmesgの出力をデーモンなどの特定の機能に制限します

dmesgの出力をデーモンなどの特定の機能に制限する場合は、オプション「 –facility =daemon」を使用します。 」dmesgコマンドで

~]# dmesg --facility=daemon

上記のコマンドの出力は次のようになります

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

以下は、dmesgコマンドでサポートされているログ機能です。

  • カーン
  • ユーザー
  • メール
  • デーモン
  • 認証
  • syslog
  • lpr
  • ニュース

6。 dmesgコマンドの出力を特定のレベルのリストに制限する

以下は、dmesgコマンドでサポートされる特定のログレベルです。

  • emerg
  • アラート
  • クリティカル
  • エラー
  • 警告
  • 通知
  • 情報
  • デバッグ

エラーと警告に関連するログを表示したいとします。次に、「– level」オプションを使用してから、err&warnなどのレベルを使用します。例を以下に示します

~]# 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。 dmesgログでタイムスタンプを有効にする

dmesgでタイムスタンプを有効にしたいシナリオがいくつかあります。これは、dmesgコマンドで「-T」オプションを使用することで簡単に実現できます。

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

場合によっては、dmesgコマンド出力でデコード機能とレベルとともにtimestmapが必要な場合は、「 -Tx」を使用します。 」オプション、

~]# dmesg -Tx

8。 「–follow」オプションを使用してリアルタイムのdmesgログを監視する

dmesgコマンドの「–follow」オプションを使用して、リアルタイムのdmesgログを表示します。例を以下に示します。

~]# dmesg --follow

dmesgのリアルタイム監視に沿ってタイムスタンプを有効にする場合は、次のコマンドを使用します。

~]# dmesg -Tx --follow

9。 「-r」オプションを使用して生のメッセージバッファを表示する

dmesgコマンドの「-r」オプションを使用して生のメッセージバッファを表示します。例を以下に示します

~]# dmesg -r

10.dmesgコマンドにsyslogを使用させる

dmesgが/dev/kmsgではなくsyslogからデータを取得したい場合があります。これは、オプション「 -S」を使用して簡単に実現できます。 「、例を以下に示します:

~]# dmesg -S

dmesgコマンドログはファイル「/var/ log/dmesg」に保存されます

このチュートリアルは以上です。これらのヒントが、dmesgコマンドをよりよく理解するのに役立つことを願っています。

また読むLinuxプロセスを監視するための20psコマンドの例


Linux
  1. tarコマンドを使いこなす:Linuxでバックアップを管理するためのヒント

  2. 生産性を向上させるためのLinuxコマンドラインのヒント

  3. Linux での dmesg コマンドの例

  1. Linuxで印刷するための3つのヒント

  2. Linuxコマンドラインに関する8つのヒント

  3. Linux の cd コマンドに関する 6 つの素晴らしいハック – ギーク向けの生産性のヒント #3

  1. Linuxコマンドラインでlsを使用してファイルを一覧表示するためのヒント

  2. Linuxでtopコマンドを使用するためのヒント

  3. Linuxユーザー向けの12のIPコマンド例