ps 快照速查
ps 给出某一时刻的进程快照:按 CPU 或内存排序找大户,按状态过滤找僵尸与不可中断睡眠,带完整命令行区分同名进程。它不实时,但胜在轻量、输出稳定,适合脚本采集与现场取证。需要看动态变化再用 top 或 htop。
基本信息
| 适用场景 | 快速定位资源大户与异常进程状态 |
|---|---|
| 命令语法 | ps aux ;ps -eo 自定义输出列 |
| 常用选项 | --sort 排序 / -eo 指定列 / -eLf 显示线程 / -p 指定进程 |
| 所属 | procps-ng |
典型使用场景
- 找出内存或 CPU 占用最高的进程
- 筛查僵尸进程与不可中断睡眠的进程
- 查看进程的启动时长与父子关系
- 统计线程总数,判断是否存在线程泄漏
- 脚本采集基线,用于趋势对比
常用示例
常用示例
ps aux --sort=-rss | head -n 12
ps aux --sort=-%cpu | head -n 12
ps -eo pid,ppid,stat,rss,etime,cmd --sort=-rss | head
ps -eLf | wc -l # 线程总数
ps -eo stat,pid,ppid,cmd | awk '$1 ~ /Z|D/' | head # 僵尸与不可中断睡眠状态码读法
| 状态 | 含义 | 提示 |
|---|---|---|
| R | 正在运行或可运行 | 长期大量 R 说明 CPU 在排队 |
| S | 可中断睡眠 | 等待事件的常态 |
| D | 不可中断睡眠 | 多与磁盘或网络文件系统有关 |
| Z | 僵尸 | 已退出,等待父进程回收 |
| T | 已停止 | 被信号暂停或正在调试 |
| 附带字符 | < 高优先级、N 低优先级、l 多线程、s 会话组长 | 要组合起来看 |
僵尸进程本身几乎不占资源,要处理的是没能回收它的父进程;父进程恢复后僵尸会自动消失。
容器里 ps 看到的进程号与宿主机不同,跨层定位要借助容器运行时工具,或进入对应命名空间查看。
要看动态变化就换 top 的批处理模式或 htop;ps 负责给出固定截面,两类工具搭配使用比单用其中一种更高效,采集基线时把两者输出都存档,事后能交叉验证。另外 ps 与 top 的排序和采样口径并不相同,跨工具对比前先确认指标定义一致。