Я пытаюсь получить 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"