Answers:
为了消除基本的误解,请dmesg
不要阅读/var/log/dmesg
。它直接从内核环形缓冲区读取,并为您提供最新的N条消息。引导过程快结束时,dmesg
将调用该命令以将引导消息写入其中/var/log/dmesg
(该文件的旧版本以常规方式旋转)。
一旦你有一个Syslog运行(syslogd
,rsyslogd
,syslog-ng
等)读取从内核缓冲区和写入文件如/var/log/kern.log
。(这是针对Debian的;其他系统会有所不同)。假设您的系统能够在崩溃之前写入磁盘并刷新磁盘缓冲区,那么您将在这里找到内核垂死的尖叫声。
在我的Debian系统上,/var/log/kern.log
文件包含人类可读的时间戳。
dmesg
要写入的东西以外的其他东西kern.log
,特别是以下守护程序,特别是以下守护程序gnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
journalctl
用来获取日志!我只是认为其他人可能会对这种不一致感兴趣。查看我的系统,i)使用以下条目rsyslog
进行登录,该调用用于确认我的任何配置文件都不与之相关或已被修改(serverfault.com/questions/90400/…),我的rsyslog版本为,我正在使用debian Stretch。kern.log
kern.* -/var/log/kern.log
debsums -e
rsyslog
systemd
8.24.0-1
虽然对OP来说有点晚了...
我使用Fedora,但是如果您的系统使用Fedora,journalctl
则可以通过以下方式轻松地从先前的关闭/崩溃(dmesg -T
格式)中获取内核消息(dmesg日志)。
选项:
注意:还有一个-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
在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位开始压缩)如果您有许可证,则可以使用cat
,more
或less
普通和zcat
,zmore
或zless
压缩后阅读
systemd
,因为dmesg 已记录到systemd(请参阅下面的答案)。