ADB Shell:获取进程id

一、前言

        有时候我们会在Android设备中运行一些二进制文件。但是当这些文件运行在后台后,我们可能无法关闭他们。当我们希望获取到某个进程的pid,并通过kill命令停止他们时。一般做法我们使用ps命令查找想要的进程pid。但是当我们需要在我们的应用中做到这点,则需要准确地获取到进程pid。

二、命令

ps -eo COMM,PID,PPID,COMMAND|grep -E "^($regex)"|awk '{if ($2 ~ /^\(deleted\)$/) print $1 " " $3 " " $4 " " $5; else print $1 " " $2 " " $3 " " $4}'
  • ps命令:列出用户进程列表
  • -e:同-A,列出所有进程
  • -o:输出字段而不是默认值,每个字段都有可选的
    • COMM :可运行程序的文件名
    • PID:进程ID
    • PPID:父进程ID
    • COMMAND:可运行程序的路径(可以根据这个确定是否是我们找寻的程序)

grep -E "^($regex)" 是用于过滤ps命令的结果,$regex是正则表达式,例如我要找寻开头是smbd和nmbd的进程,则可以写成grep -E "^(smbd|nmbd)"

 awk命令是用于规范化输出结果。上面的ps命令会输出以下两种结果:

第一种:

smbd                         5756     1 /data/data/com.xxx.xxx/files/bin/smbd
smbd                         5758  5756 /data/data/com.xxx.xxx/files/bin/smbd
smbd                         5759  5756 /data/data/com.xxx.xxx/files/bin/smbd
smbd                         5773  5756 /data/data/com.xxx.xxx/files/bin/smbd
nmbd                         5777     1 /data/data/com.xxx.xxx/files/bin/nmbd

第二种(进程运行后源文件被删除):

smbd (deleted)                         5756     1 /data/data/com.xxx.xxx/files/bin/smbd (deleted)
smbd (deleted)                         5758  5756 /data/data/com.xxx.xxx/files/bin/smbd (deleted)
smbd (deleted)                         5759  5756 /data/data/com.xxx.xxx/files/bin/smbd (deleted)
smbd (deleted)                         5773  5756 /data/data/com.xxx.xxx/files/bin/smbd (deleted)
nmbd (deleted)                         5777     1 /data/data/com.xxx.xxx/files/bin/nmbd (deleted)

所以最后需要通过awk命令规范第二种输出的结果。

三、命令执行结果参考

这里仅截取了一部分

sh 2753 1274 /system/bin/sh
installer 2755 2753 /data/local/tmp/.studio/bin/installer
abb 2771 1274 /system/bin/abb
app_process64 2786 424 /system/bin/app_process64
logcat 3178 1274 /system/bin/logcat
[kworker/5:0-pm] 3183 2 [kworker/5:0-pm]
[kworker/1:0-events] 3448 2 [kworker/1:0-events]
[kworker/u17:5-csf_scheduler_gpu_idle_] 3556 2 [kworker/u17:5-csf_scheduler_gpu_idle_]
[kworker/0:2-events] 3579 2 [kworker/0:2-events]
[kworker/5:1H-events_highpri] 3614 2 [kworker/5:1H-events_highpri]
[kworker/2:0H-kblockd] 3631 2 [kworker/2:0H-kblockd]
[kworker/0:1H-mmc_complete] 3916 2 [kworker/0:1H-mmc_complete]
sh 3917 1274 /system/bin/sh
vm 3919 3917 /system/bin/vm
vm 3920 3919 /system/bin/vm
vm 3922 1 /system/bin/vm
vm 3924 3922 /system/bin/vm
sh 3926 3924 /system/bin/sh
sh 4000 1414 /system/bin/sh
app_process64 4015 424 /system/bin/app_process64
app_process64 4062 424 /system/bin/app_process64
pure-ftpd 4217 1 /data/user/0/com.station.pluginscenter/files/modules/pure-ftpd/pure-ftpd
webdav 4415 1 /data/user/0/com.station.pluginscenter/files/modules/station_webdav/webdav
web-server 4534 1 /data/user/0/com.station.pluginscenter/files/modules/webserver/web-server
[kworker/7:0-pm] 4575 2 [kworker/7:0-pm]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值