深入理解Android中查看进程(ps)命令
By Long Luo
注:
这篇文章是2013年发表在个人 CSDN Blog上解析ANDROID ps命令执行后各项参数的含义 ,今天将其移到个人独立博客站上。
如何查看Android进程信息呢?
可以打开adb shell
,然后我们就有2种方法:
1. 直接输入ps命令
输入之后,我们就可以看到如下的信息:
1 | # ps |
那么我们禁不住要问:
USER PID PPID VSIZE RSS WCHAN PC NAME
那么这些项各代表着什么意思呢?
- USER: 进程的当前用户;
- PID : 毫无疑问, process ID的缩写,也就进程号;
- PPID :process parent ID,父进程ID
- VSIZE : virtual size,进程虚拟地址空间大小;
- RSS : 进程正在使用的物理内存的大小;
- WCHAN :进程如果处于休眠状态的话,在内核中的地址;
- PC : program counter,
- NAME: process name,进程的名称
和Linux ps
命令对比:
Android的内核还是Linux的,我们可以和Linux下ps aux命令的各项参数进行对比,可见:
1 | root@long-desktop:~# ps aux |
在Linux下ps命令各项含义如下所示:
- %CPU 进程的cpu占用率
- %MEM 进程的内存占用率
- VSZ 进程所使用的虚存的大小
- RSS 进程使用的驻留集大小或者是实际内存的大小
- TTY 与进程关联的终端(tty)
- STAT 检查的状态:进程状态使用字符表示的,如R(running正在运行或准备运行)、S(sleeping睡眠)、I(idle空闲)、Z (僵死)、D(不可中断的睡眠,通常是I/O)、P(等待交换页)、W(换出,表示当前页面不在内存)、N(低优先级任务)T(terminate终 止)、W has no resident pages
- START (进程启动时间和日期)
- TIME ;(进程使用的总cpu时间)
- COMMAND (正在执行的命令行命令)
- NI (nice)优先级
- PRI 进程优先级编号
- PPID 父进程的进程ID(parent process id)
- SID 会话ID(session id)
- WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
- FLAGS 与进程相关的数字标识
android ps命令实现的源码
android下ps命令的源码的位置:android/system/core/toolbox/ps.c
,其实现如下:
1 | int ps_main(int argc, char **argv) |
我们可以得到每一行数据是如何获得的:
1 | static int ps_line(int pid, int tid, char *namefilter) |
进入/proc文件夹
在/proc文件夹下有很多对应进程ID号的子文件夹:
1 | drwxr-xr-x 23 root root 4096 2012-10-01 02:09 ../ |
我们可以进入对应的文件夹内,可以看到有以下信息,就可以查询到你的进程信息了。
By Long Luo 2016-6-4 02:34:46 ~ 2016-6-4 02:48:18 at Shenzhen, China.