1. ps aux命令输出通常包含以下字段:
| 字段名 |
含义 |
单位/说明 |
| USER |
进程所属用户 |
用户名或UID |
| PID |
进程ID |
唯一标识符,用于操作进程(如kill PID) |
| %CPU |
进程占用的CPU百分比 |
基于核心数的相对值(多核系统中N核最大为N*100%) |
| %MEM |
进程占用的无力内存百分比 |
相对总内存的占比 |
| VSZ |
虚拟内存大小(Virtual Memory Size) |
KB包括进程可访问的所有内存(物理内存、交换分区、共享库等) |
| RSS |
常驻集大小(Resident Set Size) |
KB世纪占用的物理内存(不包括交换分区和未使用的共享库) |
| TTY |
控制终端 |
?表示无终端(如守护进程),ps/0表示伪终端(如SSH连接) |
| STAT |
进程状态码 |
由字母和符号组成,反应进程当前状态 |
| START |
进程启动时间或日前 |
若启动时间超过24小时,显示日期(如10-05),否则显示时间(如14:30) |
| TIME |
进程累计CPU时间 |
格式分:秒或时:分:秒(仅计算进程占用CPU的时间,非运行时长) |
| COMMAND |
启动进程的命令行 |
包括路径和参数(被截断时可使用ps auxww显示完整命令) |
2. STAT进程状态码解析
| 状态码 |
含义 |
示例场景 |
| R |
Running(运行中) |
正在占用CPU执行任务 |
| S |
Sleeping(可中断睡眠) |
等待事件完成(如I/O),可被信号唤醒 |
| D |
Disk Sleep(不可中断睡眠) |
等待磁盘I/O,无法被kill信号终止 |
| Z |
Zombie(僵尸进程) |
进程已终止,但父进程未回收其资源 |
| T |
Stopped(停止) |
被SIGSTOP信号暂停(如Ctrl+Z) |
| W |
Paging(换页) |
内核2.6前使用,现代系统罕见 |
| < |
高优先级进程 |
被nice或renice提升优先级 |
| N |
低优先级进程 |
被nice降低优先级 |
| L |
锁定内存页 |
实时进程使用mlock()锁定内存 |
| s |
会话领导者(session leader) |
如登陆shell进程 |
| l |
多线程进程 |
如Java应用程序(多线程) |
| + |
前台进程组 |
终端直接运行的命令(如ls) |
示例: S<l+表示”可中断睡眠、高优先级、多线程、前台进程组”。
- VSZ(Virtual Size): 进程可访问的”虚拟地址空间”总量,包括未分配的内存、共享库、交换分区等,仅反应理论上的内存需求,不代表实际占用。
- RSS(Resident Set Size): 进程实际驻留在物理内存中的大小,反应进程对内存的真实消耗。但需注意: RSS包括共享内存(若多个进程使用同一共享库,该部分内存会被重复计算)。
4. %CPU与TIME的区别
%CPU: 瞬时快照,表示进程在最近一次采样周期内(通常0.1秒)占用CPU的百分比。
TIME: 累计值,表示进程从启动到当前累计占用的CPU时间(仅计算实际运行时,不包括睡眠状态)。
示例: 一个进程%CPU为100%表示当前正满负荷占用1核CPU;TIME为01:30:00表示累计占用CPU1.5小时。
5. 常见用法与实战案例
5.1 基础用法: 查看所有进程
输出系统中所有进程的详细信息,适合整体了解系统进程状态。
5.2 过滤特定进程:结合grep
1 2
| ps aux | grep nginx ps aux | grep nginx | grep -v grep
|
5.3 按CPU/内存使用率排序
1
| ps aux --sort=-%cpu | head -n 11
|
说明: --sort=-%cpu表示按%cpu降序排练 -n 11包含表头行
1
| ps aux --sort=-%mem | head -n 6
|
1
| ps aux --sort=-%cpu,-%mem | head
|
5.4 查看特定用户的进程
5.5 查找僵尸进程
5.6 结合watch实时监控进程变化
1
| watch -n 2 'ps aux --sort=-%cpu | head'
|
5.7 使用pgrep定位PID结合ps查看详细信息
1
| ps aux | grep -E "$(pgrep nginx | tr '\n' '|' | sed 's/|$//')"
|