android - 从 adb 在后台运行 logcat

标签 android linux shell adb logcat

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

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

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

$ 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 不是一个选项。

最佳答案

解决它的最佳方法是创建一个 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/

问候

关于android - 从 adb 在后台运行 logcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50784211/

相关文章:

android - Android Native Browser 4.4.2 中的文本阴影移动到容器顶部

android - 一项 Activity 和所有其他 fragment

java - Android onsaveinstancestate()

android - 如何知道设备的密度?

c# - Azure 应用服务 Linux Web 应用 : It was not possible to find any installed . NET Core SDK

linux - 有没有Linux命令行环境的网站,可以练习命令?

bash - 在同一个 if 语句中检查文件是否存在和 grep

c - 为什么 ENOENT 表示 "No such file or directory"?

python - 根据 Linux 文件系统层次结构标准,放置 Python 虚拟环境的正确位置在哪里?

linux - bash:如何传递包含空格的参数