如何让 dmesg 存储日志文件?

如何让 dmesg 存储日志文件?

我的手机老是重启。我想知道 dmesg 在重新启动时会说什么,以便我可以进行诊断。

不幸的是,重启不会按预期发生,而且只有在我使用它时才会发生。我无法连续几天将手机与笔记本电脑连接。我现在已经通过 adb 连接了它,当然这个小 varlet 没有重新启动。也没有last_kmsg。

版本是 LineageOS 14。我在这里发帖是因为这个问题的答案可能适用于所有基于 UNIX 的系统。如果你不喜欢,我想把它转给Android。

我的设想是它不断写入日志,直到重新启动。我意识到,如果手机不自行重启,日志最终会填满 SD 卡。所以我正在想象一个这样的脚本:

dmesg to log.1
if log.1 >1mb, delete it 
dmesg log.2
if log.2 >1mb, delete it 
dmesg to log.1

虽然我没有能力写它。有人可以帮忙吗?

答案1

如果您有足够的资金来运行脚本,这将维护一个文件计数器并使用它来创建日志文件bash的循环序列。dmesg

#!/bin/bash
dir=/path/to/storage                             # Location of persistent storage

[[ -z "$dir/count" ]] && echo 0 >"$dir/count"    # Seed the counter if missing

while sleep 0.25
do
    count=$(( $(cat "$dir/count") +1 ))          # Read the counter and increment
    [[ $count -gt 600 ]] && count=1              # Reset so we can reuse diskspace

    echo $count >"$dir/count"                    # Save the new value
    dmesg >"$dir/dmesg.$count"                   # Write the data
done

您将需要按日期修改顺序 ( ) 查看最多 600 个日志文件的结果集,ls -t因为它们将像循环缓冲区一样被写入和重写。

相关内容