adb shell 进入手机后,执行ps就能显示手机里所有正在运行的进程。

一、ps命令详细说明

1,ps的命令参数:-t -x,-P,-p,-c [pid|name]

-t显示进程下的线程列表

-x 显示进程耗费的用户时间和系统时间,单位s

-P 显示调度策略,通过是bg or fg ,当获取失败将会un和er比之前打印的内容多出了一列PCY,表示进程的调度等级

-p 显示进程的优先级和nice等级

-c 显示进程耗费的CPU时间

[PID]过滤指定进程PID,[name]过滤指定进程NAME

2,直接使用ps:

c59e79cd0c86bd9b952bd905894b8473.png

各列参数的意思:

USER:进程当前用户;

PID(Process Id):当前进程id;

PPID(Process Parent ID):父进程ID;

VSIZE(Virtual Size):当前进程虚拟内存的大小;

RSS(Resident Set Size):实际驻留在内存中的没存大小;

WCHAN:休眠进程在内核中的地址;

PC(program counter):计算机中提供要从[存储器]中取出的下一个指令地址的[寄存器];

NAME:进程状态值及名称;(这个状态不知道根据什么区分的,试了下没有参考价值)

进程状态:

D - 不可中断的睡眠态。

R – 运行态

S – 睡眠态

T – 被跟踪或已停止

Z – 僵尸态

W - 进入内存交换(从内核2.6开始无效)

X - 死掉的进程

< - 高优先级

N - 低优先级

L - 有些页被锁进内存

s - 包含子进程

l - 多线程,克隆线程

*+ - 位于后台的进程组 *

2,根据包名(pkg_name)查看该进程的信息(在Linux中用grep,下面的例子是在windows下,所以用的是findstr);

c0686f46e00b782313ef649d208dd7d0.png

3, 查看newspage(21650)下的线程信息(暂时用他做什么分析):

4aeed9c26092a4d077824bcae550fc4c.png

4,-x参数:

0c8fb17a54e9a1f0086502cfb9c4f550.png

5,-P 显示调度策略(这个比较有用)

49a06545371fedc884da0d5e9fc0b195.png

在列属性中增加了一个重要的参数PCY(进程调度等级)

Android进程调度状态:

1).foreground process

2).visible process

3).Service process4

).background process

5).empty process

6,-p 显示进程的优先级和nice等级

0024be18d55a16e75d0f8c991d3bffa1.png

第一个是在桌面操作的;第二个是进入newspage的主页面后操作的;

PRIO(priority)

进程优化级

20

NICE

Nice值

0

RTPRI

实时进程优先级

0

SCHED

调度策略

SCHED_OTHER(默认策略)

参考:https://blog.csdn.net/caonima0001112/article/details/50379738

nice与进程调度:

Linux中,使用nice value(以下成为nice值)来设定一个进程的优先级,系统任务调度器根据nice值合理安排调度。

1),nice的取值范围为-20到19。

2),通常情况下,nice的默认值为0。视具体操作系统而定。

3),nice的值越大,进程的优先级就越低,获得CPU调用的机会越少,nice值越小,进程的优先级则越高,获得CPU调用的机会越多。

4),一个nice值为-20的进程优先级最高,nice值为19的进程优先级最低。

5),父进程fork出来的子进程nice值与父进程相同。父进程renice,子进程nice值不会随之改变。

Android中的nice:

由于Android基于Linux Kernel,在Android中也存在nice值。但是一般情况下我们无法控制,原因如下:

1),Android系统并不像其他Linux发行版那样便捷地使用nice命令操作。

2),renice需要root权限,一般应用无法实现。

线程调度:

虽然对于进程的优先级,我们无法控制,但是我们可以控制进程中的线程的优先级。在Android中有两种线程的优先级,一种为Android API版本,另一种是 Java 原生版本。Linux中,使用nice value(以下成为nice值)来设定一个进程的优先级,系统任务调度器根据nice值合理安排调度。

7,-c 显示进程耗费的CPU时间

a7d2256a2db6e2601327a104450df451.png

二、除了ps之外其他的关于进程的重要信息;

参考:https://blog.csdn.net/dfskhgalshgkajghljgh/article/details/51373694

进程的adj值:

进程的adj值和PCY值,决定了系统在资源吃紧的情况下该杀掉哪些进程。通过cat /proc/进程id/oom_adj可以看到当前进程的adj指,比如输入cat /proc/32366/oom_adj(只有root的手机才可以查看这个值)。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐