Android

如何讓 dmesg 儲存日誌文件?

  • June 20, 2019

我的手機一直在重啟。我想知道 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

雖然我沒有寫它的能力。任何人都可以幫忙嗎?

如果您有足夠的能力執行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

您將需要按日期修改順序 ( ls -t) 查看最多 600 個日誌文件的結果集,因為它們將像循環緩衝區一樣被寫入和重寫。

引用自:https://unix.stackexchange.com/questions/525916