android - 无法通过 adb shell 创建日志文件

标签 android shell adb

我的工作目录是/data/local/tmp

我在这里创建并推送了一个名为 get_meminfo.sh 的 shell 脚本文件。

它的核心功能是记录RSS使用情况并保存为日志文件,像这样:rss_res >> rss.log

但是现在我发现了一个问题:进入android shell可以运行脚本文件,比如./get_meminfo.sh,并且可以看到路径下创建的log文件。

然而,当我尝试从 adb 运行它时,如:adb shell/data/local/tmp/get_meminfo.sh,它会得到一个错误:无法创建文件,只读文件系统!

最佳答案

看来你不太明白current working dirtectory的概念.

rss_res >> rss.log 命令在当前工作目录中创建 rss.log。在以下命令序列的情况下是 /data/local/tmp:

adb shell
cd /data/local/tmp
./get_meminfo.sh

因此 rss.log 被创建在 /data/local/tmp 中,这是世界可写的。

但在 adb shell/data/local/tmp/get_meminfo.sh 的情况下,cwd/ root 文件夹。这是不可写的,命令失败。

最简单的缓解方法是在脚本中使用日志文件的绝对路径,如下所示 rss_res >>/data/local/tmp/rss.log

关于android - 无法通过 adb shell 创建日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53444858/

相关文章:

Android 应用内结算 - 未生成 IMarketBillingService.java

java - Play Billing Library v1.0 订单状态

linux - nohup 命令在 Chef 资源中不起作用

bash - 替换 shell 脚本参数中的环境变量

mysql - 通过 cron 将参数传递给 SQL 脚本

在登录到 Ubuntu GUI session 之前,Android 设备不会出现在 "adb devices"中

android - ADB 未检测到 Sony Xperia Z3 Compact (android 5.0.2)

java - 如何在Android应用程序的命令行中与sqlite3交互?

Android Studio 下午安装中止

java - Android 中的 HttpConnect 失败