运行 logcat 在后台来自 adb

running logcat in background from adb

我正在尝试通过 adb 向 android 设备发送命令,以触发 logcat 记录到设备上的文件。 为此,我触发命令:

adb shell "logcat > /sdcard/logcat.log"

到目前为止一切顺利,但问题是我需要在后台使用 运行 命令,而不是保持与 PC 的打开连接。 意思是,如果我发送命令并断开 USB 电缆,我想让 logcat 录音在后台保持 运行ning。 如果我执行

$ adb shell

$ logcat > /sdcard/logcat.log &

我可以安全地断开 USB 数据线,录音将继续进行。 但是,如果我从 shell 外部执行命令,如下所示:

adb shell "logcat > /sdcard/logcat.log &"

我在 /sdcard 中得到一个名为 logcat.log 的文件,它的权重为 0 字节。 在尝试了几种变化之后,我尝试用命令放置一个脚本文件 /sdcard 中的“logcat > /sdcard/logcat.log &”调用了 /logcatScript.log 并 运行 使用

从 shell 外部对其进行处理

adb shell "sh /sdcard/logcatScript.log"

但正在创建相同的 0 字节文件。

设备没有 root,也不应该,所以 busyBox 不是一个选项。

我试过这个方法,它在我的设备上有效

  1. adb shell

  2. logcat -f sdcard/logcat.txt &

adb shell logcat -f sdcard/logcat.txt &

现在您可以移除 USB 数据线了

解决它的最佳方法是创建一个 bash 脚本并将其推送到 data/local/tmp 文件夹,在大多数 android 设备上不需要定义 #!/system/bin/sh 或 #!/bin/bash 在第一行。 程序是:

1) 创建文件:logcat > /sdcard/logcat.txt &

2)adb push /data/local/tmp

3)adb shell chmod +x /data/local/tmp/

4)adb shell/data/local/tmp/

此致