繁体   English   中英

无法运行grep命令

[英]Not able to run grep command

我试图执行以下指令,

 Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver");

在android(java)中,但出现错误。 如果我按照以下说明进行操作,

 Process p = Runtime.getRuntime().exec("/system/bin/lsof ");

文件已成功保存。任何人都可以告诉您错误是什么吗? 实际上,我想列出并检查媒体服务器服务是否正在运行。

grep实用程序可能未安装在您的设备上。

您可以通过在控制台中尝试以下操作来检查它:

> adb shell
$ grep
grep: not found

最后一行表示此命令不可用。

问题是Runtime.getRuntime().exec(...)不知道如何处理外壳语言。 在Linux / Unix平台上,您将像这样:

Process p = Runtime.getRuntime().exec(new String[]{
    "/bin/sh", "-c", "/system/bin/lsof | grep mediaserver"});

但是,(显然)Android默认情况下没有命令外壳/命令提示符。 因此,您需要确定并在设备上安装合适的外壳,或者“手动”构建管道。 即,通过创建“管道”文件描述符,并执行这两个命令,使lsof写入管道,而grep从管道读取。

也许答案是像这样运行它...

Process p = Runtime.getRuntime().exec(
        "adb shell /system/bin/lsof | grep mediaserver");

(尝试从Java交互式运行adb的“ shell ....”部分,然后从Java进行。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM