任何人都可以告訴我如何從Android shell中PS命令的輸出中獲取PID。 例如從輸出:如何從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中PS命令的輸出中獲取PID。 例如從輸出:如何從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
也未被識別。
它非常討厭,但它的工作原理:
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
不錯的解決方案。在echo $ pid之後添加一箇中斷,將使它更有效率,但它更有效 – 2017-05-26 13:46:46
如果你在Android的shell訪問也可以使用pidof
:
# pidof com.example.poc_service
20240
但是,要小心,因爲可能有多個進程匹配...
這看起來很有希望,但是當我運行它,我得到一堆pid,從「1 2 3 6 ...」開始。任何線索發生了什麼事情? – 2016-09-15 09:30:01
@JohannesBrodwall你有沒有得到任何替代品? – 2016-10-14 01:00:59
@JohannesBrodwall可能因爲這個過程運行在多個線程,也可以是星星結束了一堆子流程。 – not2qubit 2017-05-27 09:47:06
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
什麼是「關鍵字」,即您在ps輸出中搜索什麼? (很容易隔離PID列,我會用'ps | awk'{print $ 2}'') – 2013-02-09 21:49:49
感謝Anton的回覆。但它會拋出錯誤** awk not found .. **似乎Android shell不支持所有的linux命令 – srooth 2013-02-09 21:54:05
試試'ps -C com.example.poc_service -o pid ='(note capital'-C'。不,我不確定它是否工作) – 2013-02-09 22:00:08