|
ps 命令是 Linux 中用于查看进程状态的核心工具,支持丰富的选项和输出格式。以下是对其功能的深度解析:
一、基础用法
ps # 显示当前用户在当前终端启动的进程(仅包含基础信息)。
ps aux # 查看所有用户进程,常用组合:a=所有用户,u=详细信息,x=包含无终端的进程
ps -ef # 查看所有进程,-e=所有进程,-f=全格式
关键参数:
-a 显示所有终端关联的进程
-u 显示进程所有者及资源占用
-x 显示无控制终端的进程(如守护进程)
-e 显示所有进程(等同于-A)
-f 完整格式输出(含PPID、启动时间)
-o 自定义输出字段
二、输出列解析
pid:进程ID
ppid:父进程ID
user:进程所有者
%cpu:CPU占用百分比
%mem:内存占用百分比
rss:物理内存占用(KB)
vsz:虚拟内存占用(KB)
stat:进程状态(如S=休眠,R=运行)
cmd:完整命令行
STAT 进程状态:
R:运行中或可运行
S:可中断休眠(等待事件)
D:不可中断休眠(通常为 I/O 操作)
Z:僵尸进程(已终止但未被父进程回收)
T:暂停状态(如 Ctrl+Z 暂停的进程)
<:高优先级进程
N:低优先级进程
s:会话领导者(Session Leader)
+:位于前台进程组
l:多线程进程
三、筛选进程
按进程名过滤
ps -C nginx # 显示名为 "nginx" 的进程
ps -ef | grep java # 结合 grep 过滤(需注意排除 grep 自身)
按用户过滤
ps -u root # 显示 root 用户的进程(BSD 风格)
ps -U www-data # 显示指定用户的进程(Unix 风格)
按 PID/PPID 过滤
ps -p 1234 # 显示 PID 为 1234 的进程
ps --ppid 567 # 显示 PPID 为 567 的子进程
四、高级用法自定义输出格式
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head # 按内存降序排列
-o 指定输出列(如 %cpu, %mem, lstart(启动时间)等)
显示线程信息
ps -eLf # 显示所有线程(LWP=线程ID,NLWP=线程数)
ps -T -p 1234 # 查看 PID 1234 的所有线程
进程树视图
ps axjf # 显示进程树(Unix 风格)
ps --forest # 树状结构(BSD 风格)
五、组合命令示例
查找占用 CPU 最高的进程
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 10
统计进程数量
ps -e | wc -l # 统计系统总进程数
检查僵尸进程
ps aux | grep 'Z' # 筛选状态为 Z 的进程
掌握 ps 命令的灵活使用,能快速诊断系统状态、定位资源占用问题,是 Linux 系统管理的必备技能。
|
|