私の電話は引き続き再起動されます。診断できるように、再起動時に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個のログファイルの結果セットを確認する必要があります。