adb:从adb shell中查找PID

时间:2014-01-23 21:38:46

标签: android linux bash shell adb

我正在尝试获取进程INSIDE adb shell的PID。所以,我正在做adb shell,它让我进入了android shell。现在,如果我使用常规shell获取PID,我会使用

adb shell ps | grep android.process.acore | sed 's/\s\s*/ /g' | cut -d ' ' -f 2

OR

adb shell ps | grep android.process.acore | awk '{ print $2 }'

我得到PID(数字编号 - ps | grep android.process.acore)输出的第2个字段。

但是,如果我在android shell中运行上述命令(在执行adb shell之后),我会分别得到/system/bin/sh: sed: not found/system/bin/sh: awk: not found错误。这意味着,这些命令在adb shell中不可用。但是,grep可以工作。

ps | grep android.process.acore内的adb shell输出为:

XXX_x21   11826 441   502296 39028 ffffffff 4010ff6c S android.process.acore

我正在寻找号码11826。 如何在adb shell内提取它?

另外,如果有直接的方法在adb shell中获取PID,请提供帮助。

此致 Rumit

5 个答案:

答案 0 :(得分:13)

不确定您是否可以直接获取PID,但您可以尝试以下

set `ps |grep android.process.acore`
echo $2

这会影响将ps命令的输出设置为变量$ 1,$ 2,$ 3等.PID值为$ 2

答案 1 :(得分:7)

从6.0开始的Android版本已包含pidof实用程序:

usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]...

Print the PIDs of all processes with the given names.

-s      single shot, only return one pid.
-o      omit PID(s)

答案 2 :(得分:0)

我尝试了这个,似乎有效:

$PET_ID

答案 3 :(得分:0)

我尝试了这个,它似乎可以工作:

1. adb shell -> ps -A | grep“ android.process.acore”

答案 4 :(得分:0)

adb shell pidof [package name]

adb shell pidof -s [package name]

-s 选项用于单发,只返回一个 pid。