任何人都可以告诉我如何从Android shell中的PS命令输出中获取PID。 例如,从输出:
u0_a51 20240 38 132944 22300 ffffffff 40037ebc S com.example.poc_service
要获得pid值20240
。我试过了
ps -ef | grep com.example.poc_service
但无济于事。此外pgrep
未被识别。
答案 0 :(得分:3)
如果您在Android中拥有shell访问权限,则还可以使用pidof
:
# pidof com.example.poc_service
20240
但是,要小心,因为可能有多个进程匹配...
答案 1 :(得分:0)
它很讨厌,但它有效:
for pid in `ls /proc`; do
cmd=`cat $pid/cmdline 2> /dev/null`;
if [ "X$cmd" == "Xcom.example.poc_service" ]; then
echo $pid;
fi
done
或作为一行:
for pid in `ls /proc`; do cmd=`cat $pid/cmdline 2> /dev/null`; if [ "X$cmd" == "X/system/bin/mm-qcamera-daemon" ]; then echo $pid; fi done
答案 2 :(得分:0)
Android中无法使用grep
,egrep
,fgrep
,rgrep
。
如果您正在使用Unix
,Linux
,Mac
或Cygwin
,则可以管道adb shell
命令的输出以获得您想要的结果
$ adb shell ps |grep settings
system 23846 71 111996 22676 ffffffff 00000000 S com.android.settings
$ adb shell ps |grep settings |awk '{print $2}'
23846