adb:从adb shell中查找PID

rum*_*tel 5 linux bash shell android 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
Run Code Online (Sandbox Code Playgroud)

要么

adb shell ps | grep android.process.acore | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)

我得到PID(一个数字 - 第二个字段ps | grep android.process.acore)输出.

但是,如果我在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
Run Code Online (Sandbox Code Playgroud)

我正在寻找号码11826.我怎样才能在里面提取它adb shell

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

问候,Rumit

Ste*_*eet 14

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

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

这具有将ps命令的输出设置为变量$ 1,$ 2,$ 3等的效果.PID值为$ 2


Ale*_* P. 9

从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)
Run Code Online (Sandbox Code Playgroud)