如何在Android shell中从PS命令输出中获取PID

时间:2013-02-09 21:46:16

标签: android shell

任何人都可以告诉我如何从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未被识别。

3 个答案:

答案 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中无法使用grepegrepfgreprgrep

如果您正在使用UnixLinuxMacCygwin,则可以管道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