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

ls -tログファイルは循環バッファのように書き込んで書き換えるため、日付変更順序()で最大600個のログファイルの結果セットを確認する必要があります。

関連情報