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:

各列参数的意思:

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);

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

4,-x参数:

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

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

Android进程调度状态:

1).foreground process

2).visible process

3).Service process4

).background process

5).empty process

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

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

 

PRIO(priority)进程优化级20
NICENice值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时间

二、除了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

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐