Categories: linux

Linuxのカーネルログを確認する方法:/var/log/kern.logの見方と活用法

Linuxシステムを運用していると、予期しないトラブルやハードウェアのエラー、ドライバの問題に遭遇することがあります。そんなときに役立つのが「カーネルログ」です。Linuxでは、カーネルが出力するメッセージを記録したログファイルがあり、それが/var/log/kern.logです。このファイルを確認することで、システムの奥深くで何が起きているのかを把握できます。この記事では、/var/log/kern.logの基本的な確認方法から、ログの読み方、トラブルシューティングへの活用までをわかりやすく解説します。Linux初心者から中級者の方まで、ぜひ参考にしてください。


/var/log/kern.logとは?

/var/log/kern.logは、Linuxカーネルが出力するログメッセージを格納するファイルです。カーネルはOSの中核部分で、ハードウェアの制御やプロセス管理などを担当しています。そのため、カーネルログには以下のような情報が含まれます。

  • ドライバの読み込み・アンロード
  • ハードウェアの接続・切断
  • ファイルシステムのマウント・アンマウント
  • カーネルのエラーメッセージや警告
  • IRQ(割り込み)の情報や競合の警告

システムの起動やシャットダウン時、異常時の動作など、普段は目にしない低レイヤの処理内容を確認できる重要なログです。


kern.logが存在するか確認する

Linuxディストリビューションによっては、/var/log/kern.logが存在しないことがあります。Debian系(Ubuntuなど)では一般的にこのファイルが使われますが、Red Hat系(CentOS、RHEL)などでは/var/log/messagesjournalctlを使うのが主流です。

以下のコマンドでファイルの存在を確認できます。

ls -l /var/log/kern.log

ファイルが存在しない場合、rsyslogの設定やログレベルが原因の可能性があります。


kern.logを表示する基本的なコマンド

ログファイルを確認する際、以下のようなコマンドを使うと便利です。

1. 内容を一括表示する

cat /var/log/kern.log

ただし、この方法だと長いログファイルを一気に出力するため、見にくくなります。

2. ページ分けして読む

less /var/log/kern.log

矢印キーやスペースでスクロールでき、検索(/キーワード)も可能です。

3. 直近のログを確認する

tail /var/log/kern.log
tail -n 50 /var/log/kern.log

-nオプションで表示行数を指定できます。

4. ログの追跡(リアルタイム監視)

tail -f /var/log/kern.log

ログが追記されるたびにリアルタイムで画面に出力されます。デバイスの接続テストなどに有効です。


kern.logの典型的な出力内容と読み方

ログの一部を例にとって見てみましょう。

Apr  5 10:25:36 hostname kernel: [12345.678901] usb 3-2: new high-speed USB device number 4 using xhci_hcd

このログの見方は以下の通りです。

  • Apr 5 10:25:36:ログが記録された日時
  • hostname:ログを出力したマシン名
  • kernel::出力元がカーネルであることを示す
  • [12345.678901]:カーネル起動からの秒数
  • usb 3-2: new high-speed USB device number 4 using xhci_hcd:内容(ここではUSBデバイスの接続)

このように、カーネルの動作ログには、接続されたデバイスの詳細や異常の兆候が記録されています。


rsyslogによるカーネルログの設定確認

/var/log/kern.logが生成されていない場合、rsyslogがカーネルログを記録していない可能性があります。

設定ファイルは以下のいずれかです:

/etc/rsyslog.conf
/etc/rsyslog.d/*.conf

設定の一例:

kern.*    /var/log/kern.log

このように記述されていれば、すべてのカーネルレベルのメッセージが/var/log/kern.logに記録されます。設定変更後はrsyslogを再起動します。

sudo systemctl restart rsyslog

journalctlでカーネルログを確認する方法(systemd対応)

多くのディストリビューションでは、systemdの導入によりjournalctlが標準となっています。/var/log/kern.logがなくても、以下のコマンドでカーネルログを確認できます。

journalctl -k

特定期間のカーネルログを見たい場合:

journalctl -k --since "1 hour ago"

ブートごとのログを確認したい場合:

journalctl -k -b

複数の起動履歴がある場合、どのブートのログを確認したいかを選択することも可能です。


カーネルログが役立つトラブルシューティング例

1. USBデバイスが認識しない

カーネルログにUSB接続に関するエラーが記録されることで、ケーブル断線や電力不足が原因であると判断できることがあります。

2. ハードディスクのI/Oエラー

ATA bus errorI/O errorのようなログが出る場合、ハードディスクの劣化や接続不良を疑えます。

3. ドライバの不具合

モジュールの読み込みエラーが記録されると、対応ドライバが不足している、あるいはバージョンが適合していないことが分かります。


ログをgrepでフィルタリングして効率よく読む

特定の情報だけを抽出したいときにはgrepが便利です。

grep usb /var/log/kern.log

エラーのみを見たい場合は次のように:

grep -i error /var/log/kern.log

カーネルが再起動した原因を追いたいときは次のようなキーワードが役立ちます:

grep -i panic /var/log/kern.log

まとめ

/var/log/kern.logは、Linuxカーネルの動作を記録した非常に重要なログファイルです。ハードウェアやドライバまわりのトラブルシューティングには欠かせない情報源であり、ログを読み解く力がLinux管理者としてのスキル向上にもつながります。

Debian系以外ではこのファイルが存在しないこともありますが、journalctl -kで代替が可能です。普段からログを定期的に確認しておくことで、トラブルの早期発見や対応にもつながるため、ぜひ習慣づけていきましょう

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。