ps(Process status )查看进程状态的命令,该命令显示瞬间进程的状态
简单用法,直接adb shell ps命令
localhost:~ name$ adb shell ps
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 5368 1492 SyS_epoll_ 0000000000 S /init
root 2 0 0 0 kthreadd 0000000000 S kthreadd
root 3 2 0 0 smpboot_th 0000000000 S ksoftirqd/0
root 5 2 0 0 worker_thr 0000000000 S kworker/0:0H
root 7 2 0 0 smpboot_th 0000000000 S migration/0
root 8 2 0 0 rcu_gp_kth 0000000000 S rcu_preempt
root 9 2 0 0 rcu_gp_kth 0000000000 S rcu_bh
root 56 2 0 0 down_timeo 0000000000 D blackbox_main_t
shell 14905 4519 5996 1312 0 7f9b3f4114 R ps
各字段的含义:
USER 进程当前用户
PID 进程ID
PPID 父进程ID
VSIZE 进程的虚拟内存大小,以KB为单位
RSS 实际占用的内存大小,以KB为单位
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
PC Program Counter
NAME 进程状态及名称
休眠进程:这个是进程的状态,从上面打印的内容中可看出进程的状态
进程状态有不同的值:
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
W - 进入内存交换(从内核2.6开始无效)
X - 死掉的进程
< - 高优先级
N - 低优先级
L - 有些页被锁进内存
s - 包含子进程
l - 多线程,克隆线程
*+ - 位于后台的进程组 *
program counter:计算机中提供要从[存储器]中取出的下一个指令地址的[寄存器]
ps 命令参数:-P -p -t -x -c [pid] [name]
-P 显示调度策略,通常是bg或fg,当获取失败将会是un和er
-p 显示进程的优先级和nice等级
-t 显示进程下的线程列表
-x 显示进程耗费的用户时间和系统时间,格式:(u:0, s:0),单位:秒(s)
-c 显示进程耗费的CPU时间 (可能不兼容Android 4.0以前的老版本系统)
[pid] 过滤指定的进程PID
[name] 过滤指定的进程NAME
ps xxx 显示过滤指定名称的进程
和Linux的ps不同,Linux的ps命令可以这样子:ps -aux,Android上ps的参数并不能一起使用,如ps -txPc.
参考文章
查看进程调度等级
localhost:~ name$adb shell ps -P
USER PID PPID VSIZE RSS PCY WCHAN PC NAME
root 1 0 5368 1492 fg SyS_epoll_ 0000000000 S /init
root 3056 1 4280 476 tv SyS_epoll_ 0000000000 S /sbin/healthd
u0_a58 5183 3261 1939580 86688 bg SyS_epoll_ 0000000000 S com.huawei.secime
比之前打印的内容多出了一列PCY,表示进程的调度等级
Android进程调度状态:
1.foreground process
2.visible process
3.Service process
4.background process
5.empty process