adb 查看并杀死进程

查进程 PID

要查进程 PID,首先要知道一个 shell 命令——ps。通过 ps 命令,我们可以查到任何想要的进程的 PID,然后就能通过 PID 对它干坏事了。

这里的 ps 命令是 适用 ADB 的,与传统 Linux 下的 PS 命令不完全一致adb shell下 ps 命令的用法如下:

ps [-AadefLlnwZ] [-gG GROUP,] [-k FIELD,] [-o FIELD,] [-p PID,] [-t TTY,] [-uU USER,]

先看一下这些参数的说明:

Which processes to show (selections may be comma separated lists):
-A  All processes
    // 显示所有进程(同 -e)
-a  Processes with terminals that aren't session leaders
    // 显示一个终端的所有进程,除了会话引线
-d  All processes that aren't session leaders
    // 显示所有进程,但省略所有的会话引线
-e  Same as -A
    // 与 -A 相同
-g  Belonging to GROUPs
    //gid or groupname 显示特定组的所有进程
-G  Belonging to real GROUPs (before sgid)
-p  PIDs (--pid)
    // -p PID, 查看特定PID的进程状态信息
-P  Parent PIDs (--ppid)
    // -P PID, 查看特定PPID的进程状态信息
-s  In session IDs
-t  Attached to selected TTYs
-T  Show threads
    // 显示线程信息
-u  Owned by USERs
    // -u user, 显示user用户的进程信息
-U  Owned by real USERs (before suid)

Output modifiers:
-k  Sort FIELDs in +increasing or -decreasting order (--sort)
    // -k +PID, 以PID增序排序显示
-M  Measure field widths (expanding as necessary)
    // 让输出的表格化信息自动适应列宽
-n  Show numeric USER and GROUP
    // 以数字形式显示USER和GROUP信息
-w  Wide output (don't truncate fields)
    // 宽输出(不截断字段)

Which FIELDs to show. (Default = -o PID,TTY,TIME,CMD)
-f  Full listing (-o USER:12=UID,PID,PPID,C,STIME,TTY,TIME,ARGS=CMD)
    // 显示括号中的列
-l  Long listing (-o F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD)
    // 显示括号中的列
-o  Output FIELDs instead of defaults, each with optional :size and =title
    // 显示指定列,多个列名之间用逗号隔开(参考上面的)
-O  Add FIELDS to defaults
    // 将指定列添加到默认列表(上面的 Default)
-Z  Include LABEL
    // 显示 LABEL

上面列出了大量的参数,但实际使用的时候,很少需要同时出现这么参数,往往最简单的就可以了。不过在使用过程中要注意以下事项:

1、如果已经进入adb shell环境,则可以直接使用 ps 命令:

C:\Users\ShawnXia>adb shell
em_ts701_archos:/ # ps
USER           PID  PPID     VSZ    RSS WCHAN            ADDR S NAME
root         15574   281    9092   3012 sigsuspend 76edcf4774 S sh
root         15582 15574   10676   3428 0          7b228f50d4 R ps

默认这里只列出了两条记录,如果要列出所有进程信息,带上参数-A即可。

2、如果没有进入adb shell环境,则可以直接使用adb shell ps,此时不需要带任何参数,即可列出所有进程信息。

C:\Users\ShawnXia>adb shell ps
USER           PID  PPID     VSZ    RSS WCHAN            ADDR S NAME
root             1     0   22848   3440 SyS_epoll_wait 4ff64c S init
root             2     0       0      0 kthreadd            0 S [kthreadd]
root             3     2       0      0 smpboot_thread_fn   0 S [ksoftirqd/0]
root             5     2       0      0 worker_thread       0 S [kworker/0:0H]
root             7     2       0      0 rcu_gp_kthread      0 S [rcu_preempt]
root             8     2       0      0 rcu_gp_kthread      0 S [rcu_sched]
……此处省略大量信息……

杀进程

通过 ps 命令查到进程 PID 后,我们就可以使用kill命令对这个进程进行操作了。
adb shell中的 kill 命令的用法如下:

usage:  kill [-s signame | -signum | -signame] { job | pid | pgrp } ...
        kill -l [exit_status ...]

这里杀进程只需要kill PID即可,举个栗子:

// 不在adb shell环境中
C:\Users\ShawnXia>adb shell kill 28456
// 在adb shell中
C:\Users\ShawnXia>adb shell
em_ts701_archos:/ # kill 32268

小结

上面说了那么多,实际常用的就两组:
没有进adb shell

C:\Users\ShawnXia>adb shell ps
C:\Users\ShawnXia>adb shell kill 28456

进了adb shell

C:\Users\ShawnXia>adb shell
em_ts701_archos:/ # ps -A
em_ts701_archos:/ # kill 28456

其它方法

上面的方法是通用方法,但如果要干掉的不是那些系统服务,而是知道包名的其他进程,那还可以用下面的方法。
1、adb shell下:

em_ts701_archos:/ # ps -A | grep com.android.email
u0_a48        1637   405 3519476  77516 SyS_epoll_wait 7d991385ac S com.android.email
em_ts701_archos:/ #
em_ts701_archos:/ # am force-stop com.android.email
# 或者
em_ts701_archos:/ # kill 1637

2、未进入adb shell
若未进入 adb shell,那在 cmd 环境下 grep 命令是用不了的:

C:\Users\ShawnXia>adb shell ps | grep com.android.email
'grep' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

此时可以将 ps 和 grep 命令用双引号包起来,当做一个整体给到 adb shell 去处理:

C:\Users\ShawnXia>adb shell "ps | grep com.android.email"
u0_a48        9719   405 3571040 126896 SyS_epoll_wait 7d991385ac S com.android.email
C:\Users\ShawnXia>
C:\Users\ShawnXia>adb shell "am force-stop com.android.email"
// 或者
C:\Users\ShawnXia>adb shell kill 9719

本笔记已同步推送到微信公众号:灰灰的Rom笔记。

猜你喜欢

转载自blog.csdn.net/ShawnXiaFei/article/details/80757439
今日推荐