【问题标题】:Where does Android store shutdown logs?Android 在哪里存储关机日志?
【发布时间】:2011-05-20 11:55:54
【问题描述】:

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

那么如何在Android中获取关机日志呢?

【问题讨论】:

    标签: android linux logging linux-kernel


    【解决方案1】:

    查看以下位置:

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

    (此列表并非严格意义上的内核日志,还包括框架和应用程序日志,有时也很有趣)

    【讨论】:

    • 感谢克里斯的回复!我检查了手机上的位置。我找不到 /proc/last_kmsg 和 /data/tombstones/。 /data/dontpanic 上的“ls”什么也没返回!!我在 /data/system/dropbox/ 中遇到了一些运气,因为它们包含 SYSTEM_BOOT@915149630014.txt system_app_strictmode@915149633098.txt.gz 之类的文件,它们有一些 APP 级别的信息。他们都没有我们从 kmsg 获得的信息 :(
    • 您在 /data/system/dropbox 中没有类似 SYSTEM_LAST_KMSG@xxx.txt.gz 的文件?这可能不是标准功能......不幸的是。
    • 没有克里斯!没有任何这样的 LAST_KMSG 类型的文件!无论如何,非常感谢您的帮助!如果您发现任何其他线索,请回复,我仍然落后于android中的关闭日志!
    【解决方案2】:

    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 的情况下工作)

    或者向一些startup script添加正常的复制命令。
    /TL;DR

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

    您需要 root 访问权限和 adb root 访问权限才能使其工作。对于后者,如果您有自定义 rom 或 adbd insecure app,请使用开发人员选项中的设置。

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

    那么你不仅需要在命令后面加上一个 & 符号 (&) 还要确保命令在 adb 断开连接后继续运行。这是由nohupdisownsetsid 完成的(有关用法,请参阅here)。
    如果因为没有这些命令而无法使用,则需要安装busybox
    请参阅我的问题here

    请参阅here 了解如何获取 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 的情况下工作,在断开连接并重新连接后它仍然活着。我想您必须在文件不断变大时尝试。如果有人弄清楚它为什么会这样......请告诉我,我会编辑答案。

    Probably adding the commands to a startup script could be a solution for some, too.

    希望这会有所帮助。

    打饼干

    【讨论】:

      【解决方案3】:

      较新的手机不使用这些位置中的任何一个,所以如果您正在阅读这篇文章,那么截至目前

      内核崩溃日志现在位于 /sys/fs/pstore 而不是 /proc/last_kmsg

      【讨论】:

        【解决方案4】:

        我发现在 Android 中收集关机日志的一种解决方法是在主机 PC 上运行 adb pull /proc/kmsg C:\Logs.txt,然后关闭设备。您将获得日志,直到主机和设备之间的 USB 通信中断!我知道这只是众多关机场景中的一个案例,但我还没有找到其他案例的满意答案!

        【讨论】:

        • 不幸的是,您只是不知道您该死的手机什么时候会像我的手机一样自行关闭。它认为 35% 的电池电量太低,因此即使在重新启动后也会自行关闭。有时直到达到 10%。该死的安卓
        【解决方案5】:

        我一直在寻找同样的东西,终于找到了答案!

        在 android 8 中,所有日志都位于 \data\log\android_logs\... 中,包括应用程序和内核日志。内核日志称为kmsgcat-log_timestamp_.gz

        编辑:虽然这是一个非常古老的线程,但我认为答案可能会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-04
          • 2017-07-18
          • 2019-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多