前のセッションのdmesgを読む方法は? (dmesg.0)

前のセッションのdmesgを読む方法は? (dmesg.0)

dmesgは内容を読み取るコマンドです/var/log/dmesg。対照的に良いことless /var/log/dmesgは、-Tフラグを使用して人間が読める時間出力を取得できることです。

/var/log/dmesg.0今私のコンピュータがどのようにクラッシュするかを確認したいと思います。このファイルには、前のセッションのログが含まれています。しかし、dmesgコマンドで-Tフラグを使用したいと思います。またはそのようなもの。

どうすればいいのかご存知ですか?

グラフィックツールは気に入らないが、最良のものはCLIソリューションです。

答え1

OPが少し遅かったけど..

私はFedoraを使用していますが、システムがFedoraを使用している場合は、以前のjournalctlシャットダウン/衝突(一部の形式)に関するカーネルメッセージ(dmesgログ)を簡単に取得できます。dmesg -T

オプション:

  • -k(dmesg)
  • -b<ブート番号>(0、-1、-2など以前に再起動した回数)
  • -o短い精度(dmesg -T)
  • -血優先順位優先順位による出力フィルタリング(4つは通知とメッセージフィルタリング)

注:日付と日付と時刻はそれぞれiso形式で提供されています-o short-o short-iso

注文する:

  • すべてのブートサイクル:journalctl -o short-precise -k -b all
  • 現在始まった:journalctl -o short-precise -k
  • 最後のブート:journalctl -o short-precise -k -b -1
  • 前のブーツの2つのペア:journalctl -o short-precise -k -b -2
  • など。

出力例:

Feb 18 21:41:26.917400 localhost.localdomain kernel: usb 2-4: USB disconnect, device number 12
Feb 18 21:41:26.917678 localhost.localdomain kernel: usb 2-4.1: USB disconnect, device number 13
Feb 18 21:41:27.246264 localhost.localdomain kernel: usb 2-4: new high-speed USB device number 22 using xhci_hcd
Feb 18 21:41:27.419395 localhost.localdomain kernel: usb 2-4: New USB device found, idVendor=05e3, idProduct=0610
Feb 18 21:41:27.419581 localhost.localdomain kernel: usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Feb 18 21:41:27.419739 localhost.localdomain kernel: usb 2-4: Product: USB2.0 Hub
Feb 18 21:41:27.419903 localhost.localdomain kernel: usb 2-4: Manufacturer: GenesysLogic

レビュー可能なブーツの数は、次のように確認できます。

  • journalctl --list-boot

出力はjournalctl --list-boot以下の通りです。

-6 cc4333602fbd4bbabb0df2df9dd1f0d4 Sun 2016-11-13 08:32:58 JST—Thu 2016-11-17 07:53:59 JST
-5 85dc0d63e6a14b1b9a72424439f2bab4 Fri 2016-11-18 22:46:28 JST—Sat 2016-12-24 02:38:18 JST
-4 8abb8267e06b4c26a2466562f3422394 Sat 2016-12-24 08:10:28 JST—Sun 2017-02-12 12:31:20 JST
-3 a040f5e79a754b2a9055ac2598d430e8 Sun 2017-02-12 12:31:36 JST—Sat 2017-02-18 21:31:04 JST
-2 6c29e3b6f6a14f549f06749f9710e1f2 Sat 2017-02-18 21:31:15 JST—Sat 2017-02-18 22:36:08 JST
-1 42fd465eacd345f7b595069c7a5a14d0 Sat 2017-02-18 22:51:22 JST—Sat 2017-02-18 23:08:30 JST  
 0 26ea10b064ce4559808509dc7f162f07 Sat 2017-02-18 23:09:25 JST—Sun 2017-02-19 00:57:35 JST

答え2

根本的な誤解を解決するにはdmesgを読まないでください/var/log/dmesg。カーネルリングバッファから直接読み込み、最後のN個のメッセージを提供します。ブートプロセスの終わりまでに、dmesgブートメッセージを作成するための呼び出しが行われます/var/log/dmesg(通常の方法でファイルの以前のバージョンを回転させる)。

syslogdsyslog( ,rsyslogdなど ) を実行すると、syslog-ngカーネルバッファからデータを読み取って、ファイル(たとえば、/var/log/kern.logシステムがクラッシュする前にディスクに書き込んでディスクバッファをフラッシュできたと仮定すると、そこでカーネルの死ぬ悲鳴が見つかります)。

私のDebianシステムでは、/var/log/kern.logファイルに人間が読めるタイムスタンプが含まれています。

答え3

Debian では、dmesgログは次のように保存されます。

  • /var/log/dmesg(リアルタイムと非圧縮)
  • /var/log/dmesg.0(最後のセッションと非圧縮)
  • /var/log/dmesg.1.gz(2番目と圧縮)
  • /var/log/dmesg.2.gz(カウントダウン、カウントダウン、前面、圧縮)
  • /var/log/dmesg.3.gz(最後に4番目、圧縮済み)
  • /var/log/dmesg.4.gz(最後に5番目、圧縮済み)

適切な権限がある場合(一般ファイルの場合)、圧縮ファイルの場合、またはを使用または読み取ることcatができます。morelesszcatzmorezless

答え4

Alpine Linuxの場合、

echo 'previous_dmesg=yes' >> /etc/conf.d/bootmisc

mv /var/log/dmesg /var/log/dmesg.oldbootmiscで実行されます。

関連情報