谁能告诉我如何从 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
被认可。
如果您在 Android 中有 shell 访问权限,您还可以使用pidof
:
# pidof com.example.poc_service
20240
但是,要小心,因为可能有多个进程匹配......
它非常讨厌,但它有效:
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
grep
, egrep
, fgrep
,rgrep
在 Android 中均不可用。
如果您正在处理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