USBドライブが認識されなくなったり、ネットワークカードが切断されたり、SSDが誤動作したり、起動直後にエラーが表示されたりした場合、私は設定を安易に変更する前に、ほぼ必ずカーネルメッセージを確認します。
Linux では、 dmesg これにより、これらのメッセージを素早く読み取ることができます。魔法のツールではありませんが、多くの場合、I/Oエラー、USBデバイスのリセット、ファームウェアの欠落、ドライバの不具合、または不安定なネットワーク接続など、最初の有用な手がかりを提供してくれます。
このガイドでは、 dmesg 正確に言うと、 journalctl -k有用な行を選別し、メッセージを理解する前にシステムオプションを変更するという誤った考えを避ける。

dmesgが実際に表示する内容
dmesg Linuxカーネルのメッセージバッファを表示します。簡単に言うと、ハードウェア検出、ドライバ、ディスクエラー、USB、ネットワーク、ACPI、ファームウェア、メモリ、デバイスのマウントなど、低レベルのイベントが表示されます。
最新のシステムでは、これらのメッセージの一部はsystemdのログにも表示されます。そのため、以下の2つのコマンドをすぐに使えるようにしておくことをお勧めします。 dmesg 素早く読むために、 journalctl -k システムログをより見やすくするため。
dmesg
ディストリビューションによっては、読み取りに管理者権限が必要になる場合があります。権限エラーが発生した場合は、再度試してください。 須藤。
sudo dmesg
のマニュアルページ dmesg 本書にはすべてのオプションが詳細に記載されています。日常的な診断であれば、いくつかのコマンドで十分です。
溺れずに最後の行を読んでください
まず最初にすべきことは、一度に800行も表示しないことです。問題が発生した直後は、カーネルログの末尾から表示を開始してください。
sudo dmesg -T | tail -n 80
オプション -T 日付が読みやすくなります。この形式は素早く読むのに便利ですが、非常に具体的な出来事を比較する場合は、新聞の徹底的な分析に取って代わるものではないことに注意してください。そのためには、 journalctlの方がより快適です。
警告とエラーのみを表示することもできます。
sudo dmesg -T --level=err,warn
コマンドが何も返さない場合でも、必ずしも悪い兆候ではありません。単に、カーネルがそのバッファに最近のエラーや警告を記録していないことを意味するだけです。
USB、ディスク、またはネットワークの問題をフィルタリングする
時間を節約する真の鍵は、情報を絞り込むことです。USBドライブがマウントされない理由、ハードドライブが誤作動を起こす理由、ネットワークカードがリセットされる理由などを調べている場合、すべてを読む必要はありません。ハードウェアに関連するキーワードを探しましょう。
sudo dmesg -T | grep -iE 'usb|sda|sdb|nvme|ata|error|fail|reset'
念のため申し添えておくと、注意すべきセリフはたいてい非常に分かりやすいものです。 入出力エラー、 リセット、 失敗したコマンド、 blk_update_request、 読み取りエラー、 書き込みエラーこのようなメッセージが繰り返し表示される場合は、まずそれを書き直すことから始めないでください。 /etc/fstabまずケーブル、USBケース、電源を確認し、次にディスクの状態を確認してください。
USB デバイスの場合は、ガイドに既に記載されているコマンドと相互参照してください。 Linux の USB ポート または、 USBキーの取り付け。 dmesg コアが何を観測しているかを教えてくれますが、 lsusb、 lsblk そして 見つけます 実際に何が検出され、何が取り付けられているのかを理解するのに役立ちます。
lsblk -o NAME,SIZE,FSTYPE,LABEL,UUID,MOUNTPOINTS
見つけます
lsusb
ネットワークの問題の場合は、インターフェース名または次のような用語を探してください。 リンク、 名前が変更されました、 ファームウェア、 タイムアウト、 下、 上トピックが主にリスニング TCP ポートに関するものである場合は、 ss または netstat、 なぜなら dmesg ネットワークインベントリに取って代わるものではありません。
機器を接続する際は、表示されるメッセージに従ってください。
デバイスが断続的に切断される場合、最も簡単な方法はライブメッセージを監視することです。ターミナルを開き、コマンドを実行してから、ディスク、USBドライブ、またはネットワークアダプタを接続してください。
sudo dmesg -wH
-w 新しいメッセージをフォローしてください。 -H 出力がより読みやすくなります。systemd のログにとどまりたい場合は、以下を使用してください。
sudo journalctl -k -f
のマニュアルページ ジャーナルctl これは、起動時、優先度、またはユニットで検索を絞り込みたい場合に便利です。単純なハードウェア障害の場合は、カーネルが分岐を検出し、その後エラーを検出するかどうかを確認するために、ライブモニタリングで十分な場合が多いです。
journalctl と相互参照して、最後の起動記録を確認する
dmesg 手っ取り早い方法ですが、問題がサーバーに影響する場合や、再起動後に再発する場合は、そこで調査を終えません。systemdログを使用すると、独自のフィルターを使用して、現在の起動時のカーネルメッセージを再確認できます。
sudo journalctl -k -b --no-pager
sudo journalctl -k -b -p warning..alert --no-pager
最初のコマンドは、現在のブートプロセスからのカーネルメッセージを表示します。2番目のコマンドは、警告、エラー、アラートのみを表示します。これは、マウントに失敗した再起動後、ネットワークインターフェイスが正しくマウントされていない場合、またはドライバが起動時に問題を報告した場合に役立ちます。
もしあなたが今変更したばかりなら /etc/fstab確認のためだけに再起動しないでください。まずアセンブリをテストしてエラーがないか確認してください。ガイドは Linuxにおけるfstab この点については詳しく説明する必要があります。なぜなら、回線の状態が悪いと、想像以上に早く起動が阻害される可能性があるからです。
sudo mount -a
見つけます
sudo journalctl -k -b -p warning..alert --no-pager
メッセージが実際のハードウェアの問題を示しているかどうかを知る
孤立したライン dmesg これだけでは結論を出すには不十分な場合もあります。USBデバイスは一度リセットされても深刻な問題ではないことがあります。しかし、コピーするたびにエラーが再発したり、ドライブが切断と再接続を繰り返したり、I/Oエラーが繰り返し発生したりする場合は、深刻な問題として対処する必要があります。
この場合、設定を変更する前に3つのチェックを行います。
- デバイスが外部接続されている場合、ケーブル、USBポート、または電源を交換してください。
- ディスクが正しく識別されていることを確認します
lsblkそしてブルキッド; - それがディスクかSSDかを確認するには、SMARTステータスを確認してください。
lsblk -o NAME,SIZE,MODEL,SERIAL,FSTYPE,MOUNTPOINTS
sudo blkid
sudo smartctl -a /dev/sdX
交換する /dev/sdX 正しいディスクを使用してください。このコマンドを複数のディスクを持つマシンに安易にコピーしないでください。不明な場合は、ここで停止してください。 lsblk さらに作業を進める前に、モデル、サイズ、取り付け位置を確認してください。
修正する前に、正確な誤りを記録しておきましょう。
の最良の使用法 dmesg目的は特効薬を見つけることではありません。対処する前に、特定のエラーを把握することです。メッセージの前後数行をコピーし、発生時刻、使用デバイス、問題を引き起こした操作をメモしておきましょう。
sudo dmesg -T | tail -n 120 > core-diagnostic.txt
sudo journalctl -k -b -p warning..alert --no-pager >> core-diagnostic.txt
そうして初めて、どのケーブルを交換するか、どのディスクをバックアップするか、どのドライバを確認するか、どのfstabルールを修正するか、どのファームウェアをインストールするか、どのサービスを監視するかを決定できます。この手順は基本的なものに思えますが、特に断続的な障害の場合、多くの無駄な診断を防ぐことができます。
リモートマシンを管理している場合は、さらに注意が必要です。カーネルで検出されたディスクエラーやネットワークエラーによって、最終的にアクセスが遮断される可能性があります。セッションを開いたままにしておき、可能であればコンソールアクセスを提供し、カーネルが何を伝えようとしているのかを理解するまで再起動しないでください。