查看linux系统重启之前的log -- last_kmsg


当 Linux Kernel 出现 BUG 的时候,后走入 panic flow,这个时候由于 Kernel 出现了严重的问题,adbd 也无法响应 adb 连接请求,这个时候想透过读取 Kernel Log Buffer 来看 Kernel Log 是不可能的。那怎么办?

由于 Console Log 是不需要下任何命令就可以查看的,所以可以抓取 UART Log 分析,但是抓 UART Log 就要飞线,就会比较麻烦,有没有一种简单的方法可以让我们知道系统大概发生了什么事情呢?那就是 RAM Console Log。

  1. 下图所示是 RAM Console 的工作原理。



其大致的工作流程如下:

  1. 当系统开机初始化好 RAM Console Buffer 的时候就会开始进行 Logging。
  2. 一旦系统发生严重异常就会发生重启。
  3. 重启后系统启动又会开始初始化 RAM Console Buffer,在初始化 RAM Console Buffer 之前 Buffer 里面还保存了重启前的 Log 信息,在初始化的时候可以先将重启前的 Log 备份到另外一个 Buffer。
  4. 备份的 Buffer 可以通过 cat /proc/last_kmsg 来访问其中的内容。

通过上述的机制我们就可以在重启后通过 /proc/last_kmsg 来查看重启前发生了什么事情。


应用场景

RAM Console 主要可以帮助我们理清两件事情:

  1. 系统是否发生了重启。因为 /proc/last_kmsg 只有重启之后才会存在,所以只要 /proc/last_kmsg 存在我们就知道系统重启过了。(不是所有的重启都是异常重启)
  2. 如果系统重启了,我们可以根据 /proc/last_kmsg 的内容查看重启前系统都做了什么事情。

当然我们在 RAM Console header 里面还记录了 CPU hotplug 的情况以及 Hardware Watchdog Timeout Flow 的执行情况,以帮助 Debug 问题。

查看 系统重启前的kernel log,cat /proc/last_kmsg或者cat /sys/fs/pstore/console-ramoops,必须系统重启才存在这个log,这里也可以看出系统重启的原因。





  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: kmsgcat-log是一个Linux命令,用于将内核消息缓冲区中的消息输出到终端或日志文件中。kmsgcat-log通常用于系统故障排除和调试,可以帮助开发人员和系统管理员查看系统崩溃和错误信息。 使用kmsgcat-log命令可以输出当前内核消息缓冲区的所有消息,也可以使用grep等工具来过滤输出的消息。以下是kmsgcat-log的基本用法示例: ``` sudo kmsgcat-log > kmsg.txt # 将内核消息缓冲区的消息输出到文件kmsg.txt中 sudo kmsgcat-log | grep error # 过滤输出包含"error"的消息 ``` 需要注意的是,kmsgcat-log命令需要使用root权限才能执行。 ### 回答2: kmsgcat-log是一个在Linux系统中用来查看内核日志的命令行工具。kmsgcat-log可以通过读取特殊的内核日志设备/var/log/kmsg来获取内核输出的日志信息。 kmsgcat-log能够以易读的形式显示内核日志,包括内核动信息、硬件错误、内存分配和释放、设备驱动信息等。通过使用kmsgcat-log系统管理员或开发人员可以更方便地查看和分析内核的运行状况。 使用kmsgcat-log的命令格式为kmsgcat-log [OPTIONS] [FILE],其中可选项包括-v(显示详细日志信息)、-n NUM(仅显示最后NUM条日志)、-d(显示时间戳)、-t(显示日志标签)等。 除了直接在命令行中使用kmsgcat-log,也可以将输出结果定向到文件中进行保存。例如,kmsgcat-log > kernel_log.txt将内核日志保存到kernel_log.txt文件中。 总的来说,kmsgcat-log是一个方便的工具,可以帮助我们更好地了解和监控Linux系统的内核运行情况。无论是系统管理员还是开发人员都可以通过使用kmsgcat-log来查找问题、分析故障和监测系统性能。 ### 回答3: kmsgcat-log是Android系统中的一个命令行工具,用于查看和分析内核消息。在Android中,内核消息通常存储在一个称为kmsg缓冲区的特殊文件中。通过使用kmsgcat-log工具,可以将kmsg缓冲区中存储的内核消息打印到终端或保存到文件中,以便进行后续的分析。 kmsgcat-log命令有多个参数可以使用。其中,最常用的参数是"-t",用于指定打印的消息类型,如内核调试信息、警告信息、错误信息等。另外,还可以使用"-f"参数指定输出到文件中,使用"-d"参数指定输出到终端中,并可以使用"-s"参数指定输出消息的大小限制。除了这些基本的参数外,还有一些其他的可选参数可以用于进一步帮助分析内核消息。 使用kmsgcat-log可以帮助开发者和系统管理员跟踪和诊断Android系统中的各种内核问题。通过查看内核消息,可以了解到系统动时、运行时或关机时的各种事件和异常情况,从而更好地了解系统的运行状态。对于开发人员来说,这对于调试崩溃问题、性能问题和其他系统问题等非常有帮助。对于系统管理员来说,可以通过分析内核消息来监控系统的稳定性和安全性,及时处理系统中出现的异常情况。 总之,kmsgcat-log是一个方便的工具,通过它可以很方便地查看和分析Android系统中的内核消息,帮助我们更好地了解系统的运行状况和排查问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值