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

Linuxツール:dmesgを使用してメッセージを出力する

dmesg コマンドは、システム管理者の武器の最上位にとどまる必要がある、忘れがちなトラブルシューティングツールの1つです。システムに関する多くの情報が含まれているため、dmesg 何かがうまくいかないときに最初に見る場所でなければなりません。 dmesgからの出力 長いです。コマンドプロンプトで入力すると、起動時に表示される可能性のあるエラーメッセージ以外のエラーメッセージがない場合に、システムのすべての側面からの情報が報告されるため、自分で確認できます。

正式には、dmesg カーネルリングバッファを出力または制御します。デフォルトのアクションは、このバッファからのすべてのメッセージを表示することです。

今後の参照と比較のために、dmesgを確認するのに最適な時期です。 起動直後です。私は通常dmesgを送信します 次のようなコマンドを使用したテキストファイルへの情報:

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

このコマンドは、dmesg.12.11.2019.txtという名前のテキストファイルを作成します 。ファイルの作成日から次回の起動までの間に、カーネルによって生成された新しいメッセージを確認できます。

考えられる起動後のメッセージには、システムエラー、デバイスエラー、および誰かが接続する可能性のあるUSBデバイスに関する情報が含まれます。たとえば、次のdmesg 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

USB関連のメッセージの完全なリストを表示するには、dmesgを発行します usbのコマンドとgrep :

$ 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

ご覧のとおり、grepを使用しました -iを使用したコマンド オプションなので、大文字と小文字は区別されず、それに関係なくUSBデバイスに関連するすべてが表示されます(Usbusb 、またはUSB )。この方法は、使用するサブシステムまたはフィルターに適しています。フィルタの大文字と小文字は常に無視してください。

たとえば、システムに接続されているすべてのディスク(ブロックデバイス)を表示するには、次のコマンドを使用します。

$ 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)

結果にはブロックデバイスのリスト以上のものが表示されるため、ファイルシステム(この場合はXFS)を指定することで、結果をさらにフィルタリングできます。

$ 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)

-iの使用 ここでのオプションは不要ですが、他の方法では表示されない結果が発生した場合に備えて、常にオプションを含めています。上矢印キーを使用して最後のコマンド(最も優れたBash機能)を再生し、最後に検索したものをバックスペースして新しいキーワードに置き換えるだけなので、コマンドを入力すると、何も気にする必要はありません。私が探しているものを除いて。どちらの方法でも害はありません。

リモートシステムにCD/DVDドライブが装備されているかどうかを確認するには、次のコマンドを試してください。

$ 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

最後の4行には、CD-ROMドライブに関する情報が表示されます。 CD-ROMドライブはこのシステムでは仮想ですが、仮想マシンのハードウェアに含まれている場合、ドライブはISOイメージファイルを物理メディア上の起動可能なイメージであるかのようにロードできます。

dmesg コマンドは大きくて派手ではありません。多くのことを実行しないか、オプションの長いリストがあります。代わりに、それはそのシンプルさとあなたのポケットプロテクターと同じくらい実用的でエレガントです。後から考えるのではなく、dmesgを実行する習慣を身に付ける必要があります。 システムで定期的に。そして、何か問題が発生した場合は、もう一度実行して、カーネルが問題について知っていることを確認します。いくつかの悲しみといくつかのトラブルシューティング手順を節約できるかもしれません。また、問題をすばやく見つけることで、同僚や経営陣にとってヒーローのように見えることもあります。時は金なりであり、あなたはそれを節約しようとしていることを忘れないでください その日。

Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。


Linux
  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. Linuxカーネルをftraceで分析する

  3. Linuxtacコマンドの使用を開始する

  1. Linuxcatコマンドの使用を開始する

  2. LinuxでPostgreSQLを使い始める

  3. LinuxでSSHを使い始める

  1. Linuxで水素を使ってドラムを演奏する

  2. LinuxEquinoxデスクトップ環境でリラックス

  3. GNOMELinuxデスクトップの使用を開始する