web-dev-qa-db-ja.com

前のセッションからdmesgを読み取る方法は? (dmesg.0)

dmesgは/var/log/dmesgからコンテンツを読み取るコマンドです。 less /var/log/dmesgと比較して良い点は、人間が読める時間出力に-Tフラグを使用できることです。

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

どのように考えていますか?

私はグラフィカルツールを気にしませんが、最高のCLIソリューションです。

36
donquixote

基本的な誤解を解消するために、dmesg/var/log/dmesgからの読み取りを行いません。カーネルリングバッファーから直接読み取り、最新のNメッセージを提供します。ブートプロセスの終わりに向かって、dmesgが呼び出され、ブートメッセージが/var/log/dmesgに書き込まれます(そのファイルの古いバージョンは通常の方法でローテーションされます)。

Syslogを実行すると(syslogdrsyslogdsyslog-ngなど)、カーネルバッファーから読み取り、/var/log/kern.logなどのファイルに書き込みます。 (これはDebian用です。他のシステムは異なります)。システムがクラッシュする前にディスクに書き込み、ディスクバッファーをフラッシュできたとすると、カーネルの死にかけている悲鳴がここにあります。

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

33
roaima

OPには少し遅れますが...

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

オプション:

  • -k(dmesg)
  • -b <boot_number>(0、-1、-2などの前にリブートした回数)
  • -o短精度(dmesg -T)
  • -ppriority優先度の出力(4は通知と情報を除外する)でフィルタリングします。

注:-o short-o short-isoもあり、日付のみが表示され、日時はそれぞれiso形式で表示されます。

コマンド:

  • 現在のブート: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
41
Procyclinsur

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(最後から3番目で圧縮)
  • /var/log/dmesg.4.gz(最後から4番目、圧縮済み)

許可がある場合は、catmoreまたはlessを使用してプレーンなものを読み取り、zcatzmoreまたはzless圧縮されたもの

5
Diego Alonso