我正在尝试获取进程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
答案 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。