如何阅读上一届会议的dmesg?(dmesg.0)


29

dmesg是从中读取内容的命令/var/log/dmesg。与之相比,更好的less /var/log/dmesg是,我可以将-T标志用于人类可读的时间输出。

现在,我/var/log/dmesg.0想看一下,看看我的计算机如何崩溃。该文件包含上一个会话的日志。但是我想使用dmesg命令中的-T标志。或等效的东西。

任何想法如何?

我不介意使用图形工具,但最好的方法是cli解决方案。

Answers:


28

为了消除基本的误解,请dmesg不要阅读/var/log/dmesg。它直接从内核环形缓冲区读取,并为您提供最新的N条消息。引导过程快结束时,dmesg将调用该命令以将引导消息写入其中/var/log/dmesg(该文件的旧版本以常规方式旋转)。

一旦你有一个Syslog运行(syslogdrsyslogdsyslog-ng等)读取从内核缓冲区和写入文件如/var/log/kern.log。(这是针对Debian的;其他系统会有所不同)。假设您的系统能够在崩溃之前写入磁盘并刷新磁盘缓冲区,那么您将在这里找到内核垂死的尖叫声。

在我的Debian系统上,/var/log/kern.log文件包含人类可读的时间戳。


1
我认为这回答了我的问题,谢谢!不幸的是,我仍然不知道为什么它在挂起时崩溃,但这是另一回事。
donquixote 2015年

我的机器上除了dmesg要写入的东西以外的其他东西kern.log,特别是以下守护程序,特别是以下守护程序gnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ

@AttRigh应该写入该文件的唯一内容是内核。您可能想问一个新问题
roaima

@roima有趣的是...我真的没有什么要问的,因为我很高兴journalctl用来获取日志!我只是认为其他人可能会对这种不一致感兴趣。查看我的系统,i)使用以下条目rsyslog进行登录,该调用用于确认我的任何配置文件都不与之相关或已被修改(serverfault.com/questions/90400/…),我的rsyslog版本为,我正在使用debian Stretch。kern.logkern.* -/var/log/kern.logdebsums -ersyslogsystemd8.24.0-1
Att Righ's

@AttRigh您可能还想读unix.stackexchange.com/a/294206/100397
roaima

34

虽然对OP来说有点晚了...

我使用Fedora,但是如果您的系统使用Fedora,journalctl则可以通过以下方式轻松地从先前的关闭/崩溃(dmesg -T格式)中获取内核消息(dmesg日志)。

选项:

  • -k(dmesg)
  • -b < boot_number >(之前多少次重启0,-1,-2等)
  • -o短精度(dmesg -T)
  • -p priority按优先级输出过滤(4过滤掉通知和信息)。

注意:还有一个-o short-o short-iso,分别为您提供日期和iso格式的日期时间。

命令:

  • 当前启动: journalctl -o short-precise -k
  • 上次启动时间: journalctl -o short-precise -k -b -1
  • 之前的两双靴子: 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

4
迟到了。对于未来的Google员工来说永远不会迟到!

3

在Debian中,dmesg日志存储为:

  • /var/log/dmesg (实时且未压缩)
  • /var/log/dmesg.0 (最后一个会话且未压缩)
  • /var/log/dmesg.1.gz (倒数第二和压缩)
  • /var/log/dmesg.2.gz (倒数第二次压缩)
  • /var/log/dmesg.3.gz (从倒数第三开始并压缩)
  • /var/log/dmesg.4.gz (从倒数第4位开始压缩)

如果您有许可证,则可以使用catmoreless普通和zcatzmorezless压缩后阅读


我的debian并非如此(测试-拉伸,没有特别修改,至今是最新的)。这可能与有关systemd,因为dmesg 记录到systemd(请参阅下面的答案)。
Att Righ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.