Adb: найти PID из оболочки adb

Я пытаюсь получить PID процесса INSIDE adb shell. Итак, я делаю оболочку adb, которая возвращает меня в оболочку Android. Теперь, если бы я получил PID с использованием обычной оболочки, я бы использовал

adb shell ps | grep android.process.acore | sed 's/\s\s*/ /g' | cut -d ' ' -f 2 

ИЛИ

 adb shell ps | grep android.process.acore | awk '{ print $2 }' 

Я получаю PID (числовое число – второе поле в ps | grep android.process.acore ).

Однако, если я запускаю вышеуказанные команды внутри оболочки Android (после выполнения adb shell ), я получаю /system/bin/sh: sed: not found и /system/bin/sh: awk: not found ошибки соответственно. Это означает, что эти команды недоступны внутри оболочки adb. Однако grep работает.

Выход ps | grep android.process.acore ps | grep android.process.acore внутри adb shell :

 XXX_x21 11826 441 502296 39028 ffffffff 4010ff6c S android.process.acore 

Я ищу номер 11826. Как я могу извлечь его внутри adb shell ?

Также, пожалуйста, помогите, если есть прямой способ получить PID внутри оболочки adb.

С уважением, Румит

Не уверен, что вы можете получить PID напрямую, но вы можете попробовать следующее

 Set `ps | grep android.process.acore`
 Эхо $ 2

Это влияет на установку вывода команды ps в переменные $ 1, $ 2, $ 3 и т. Д. Значение PID находится в $ 2

Android версии, начиная с 6.0, уже включают утилиту pidof :

 usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]... Print the PIDs of all processes with the given names. -s single shot, only return one pid. -o omit PID(s) 

Я попробовал это и, похоже, работает:

 adb shell "set "ps | grep android.process.media"; kill -9 $2"