参考:
https://crash-utility.github.io/help_pages/ps.html
用法
- 显示所有进程的pid、task_struct、cpu以及运行状态等信息
ps
- MEM列:使用物理内存的百分比
- VSZ列:虚拟地址空间大小,单位KB
- RSS列:实际使用的物理内存大小,单位KB
- 在进程状态一列显示的标识跟进程状态的对应关系(task_state_string):
标识 | 状态 | 定义 |
RU | TASK_RUNNING | 0 |
IN | TASK_INTERRUPTIBLE | 1 |
UN | TASK_UNINTERRUPTIBLE | 2 |
ZO | EXIT_ZOMBIE | |
ST | __TASK_STOPPED | |
TR | __TASK_TRACED | |
DE | EXIT_DEAD | |
SW | SWAPPING | |
WA | TASK_WAKING | |
PA | TASK_PARKED | |
ID | TASK_IDLE | TASK_UNINTERRUPTIBLE | TASK_NOLOAD |
NE | TASK_NEW |
- 显示指定进程的信息
ps <进程pid>
orps <进程名字>
orps <进程task_struct地址>
- 只显示内核线程
ps -k
- 只显示用户进程
ps -u
- 只显示线程组组长
ps -G
- 显示指定调度策略的任务
ps -y <policy>
这里的policy
可以是左边的数组,或者对应的右边的字符串:
数字 | 策略 | 调度类 |
0 | NORMAL | cfs |
1 | FIFO | rt |
2 | RR | rt |
3 | BATCH | cfs |
4 | ISO | |
5 | IDLE | cfs |
6 | DEADLINE | deadline |
- 显示每个进程的内核栈的地址
ps -s
- 显示进程之间的父子关系
ps -p
- 显示全部或者指定进程的子进程
ps -c
- 显示进程的运行时间、起始时间以及在用户态和内核态的时间
ps -t
- 显示进程上次运行的时间戳,有多个进程的话会从距离现在最近的时间戳开始进行排序
ps -l
- 如果想将时间戳按
天-时-分-秒-毫秒
的形式显示,可以使用ps -m
- 如果想显示在指定cpu上的时间戳,可以配合
-C
:ps -C 0,2,5-8 -l
- 按线程组的方式显示,如果知道了一个进程或者线程的pid,想知道所属的线程组还有哪些线程,可以使用这个命令
ps -g
- 显示进程的资源限制
ps -r
- 统计每种状态的进程的数量
ps -S
- 只显示当前正在cpu上运行的进程
ps -A
源码分析
版本:8.0.1
代码路径:task.c