Android存储关机日志的位置在哪里?

我知道启动日志可以通过ADB提取kmsgdmesg内容来获得。
但我不知道如何检索Android中的关机日志,因为Android中没有/var文件夹(大多数桌面Linux发行版通常存储其关机日志)。

那么我怎样才能获得Android的关机日志?

Solutions Collecting From Web of "Android存储关机日志的位置在哪里?"

看看这些地方:

 /proc/last_kmsg /data/tombstones/ /data/dontpanic/ /data/system/dropbox/ 

(这个列表不是严格的内核日志,也包括框架和应用程序日志,这些日志也有时是感兴趣的)

我发现在Android中收集关机日志的一个工作是在主机PC上运行adb pull /proc/kmsg C:\Logs.txt ,然后关闭设备。 您将得到日志,直到主机和设备之间的USB通信捕捉! 我知道这只是无数关机场景中的一种情况,但我还没有找到其他情况下令人满意的答案!

TL; DR
通过adb运行命令,将logcat和proc / kmsg复制到一个文件并保持运行,即使adb断开与nohupdisownsetsid 。 可能需要busybox,也需要root和adb root。
setsid cat proc/kmsg > /sdcard/kmsg.txt &

logcat -v long -f /sdcard/logcat.txt (以某种方式只能在没有setsid情况下工作)

或者将正常的复制命令添加到某个启动脚本 。
/ TL; DR

即使在adb断开连接之后,您也可以不断地将proc/kmsglogcat复制到android设备或microSD卡上的文件中以获取日志。

您需要root访问权限和adb root访问权限才能工作。 对于后者,如果您有自定义ROM或adbd 不安全的应用程序 ,请使用开发人员选项中的设置。

使用adb shell获取你的android外壳后,输入su以获得超级用户访问权限。

那么你不仅需要在命令后加一个&符号,而且还要确保在adb断开连接后该命令继续运行。 这是通过nohupdisownsetsid (请参阅这里的用法)。
如果因为没有这些命令而无法正常工作,则需要安装busybox 。
在这里看到我的问题。

请参阅此处了解如何获取logcat和内核日志,并将其打印到某个文件或将其合并。 有关logcat命令的参数,请参阅developer.android.com/tools/help/logcat.html。

最后你可以像setsid cat proc/kmsg > /sdcard/kmsg.txt &的内核消息。

对于logcat,您可以使用以下命令之一: logcat -v long -f /sdcard/logcat.txtlogcat -v long > /sdcard/logcat.txt

我不知道为什么,但是有时它不能和setsid工作,只是没有连续复制,而是在执行命令后不久停止。 在这些情况下,它在进入jobs时也出现了,否则就没有了。 然后,它没有setsid ,它断开连接和重新连接后,它仍然活着。 我猜你只能在文件不断变大的时候试试。 如果有人弄清楚为什么它的行为是…让我知道,我会编辑答案。

可能将这些命令添加到启动脚本也可能是一些解决方案。

希望这可以帮助。

fightcookie