2013-02-09 2 views
0

안드로이드 셸에서 PS 명령 출력으로부터 어떻게 PID를 얻을 수 있습니까? 출력으로부터 예 :안드로이드 셸에서 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

"키워드"란 무엇입니까? ps 출력으로 무엇을 검색하고 있습니까? (PID 열을 분리하기 쉽습니다.'ps | awk '{print $ 2}')') –

+0

Anton에게 감사드립니다. 하지만 ** awk을 찾지 못했습니다. ** 안드로이드 셸이 모든 리눅스 명령어를 지원하지 않습니다. – srooth

+0

'ps -C com.example.poc_service -o pid ='(대문자'-C'를 사용하십시오. 아니요, 작동 여부는 확실하지 않습니다. –

답변

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 
+0

좋은 해결책. echo $ pid 다음에 휴식을 추가하면 더 효율적이긴하지만 –

3

당신은 또한 사용할 수 있습니다 pidof :

# pidof com.example.poc_service 
20240 

그러나 일치하는 프로세스가 여러 개있을 수 있으므로주의하십시오.

+1

이것은 유망 해 보이지만, 그것은, 내가.? –

+0

에 무슨 단서가 @JohannesBrodwall는이에 대한 대체 받았어 "... 1 2 3 6"로 시작, 다시 PID를 잔뜩 얻을? –

+0

은 아마 과정은 여러에서 실행되는 @JohannesBrodwall 때문에 스레드가 될 수도 있습니다. 여러 하위 프로세스를 제공했습니다. – not2qubit

0

아니요 grep, egrep, fgrep, rgrep은 Android에서 사용할 수 있습니다.

당신은 당신이 파이프는 당신이 원하는 결과를 얻기 adb shell 명령의 출력, Unix, Linux, Mac 또는 Cygwin에 수 작업하는 경우.

$ 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 
관련 문제