首页/系统/信创系统运维速查/进程查看(ps/pgrep)
命令与包管理65 条

进程查看(ps/pgrep)

进程排查基础:ps aux 与 ps -ef 看全量与父子关系,按内存/CPU 排序找资源大户,pgrep 按名称精确定位 PID。

信创系统运维速查系统更新于 2026-10-13

ps 是干什么的

ps 从 /proc 读取进程快照并格式化输出,用来判断进程在不在、PID 是多少、谁在吃资源。ps aux 与 ps -ef 是两套常用列风格,-o 可自定义列,--sort 能按 CPU 或内存排序。它只做观察不改状态,是所有 Linux 发行版都自带的基础工具,常与 pgrep、top 配合使用。

基本信息

适用平台Linux 全发行版(procps-ng)
全量列表ps aux 或 ps -ef
排序ps aux --sort=-%mem | head
定位 PIDpgrep -a <名字>、pidof <名字>
进程树ps -ejH 或 pstree -p

典型使用场景

  • 服务起不来时确认进程是否真的在跑、PID 是多少
  • 排查资源占用:按 CPU 或内存排序找出大户再决定处置
  • 核对启动参数:确认进程命令行与配置文件是否一致
  • 找出谁拉起了异常进程,判断父子关系与来源
  • 脚本分支:用 pgrep 判断进程存在性再执行后续逻辑

典型用法

典型用法
ps aux --sort=-%cpu | head -10          # CPU 占用前十
ps aux --sort=-%mem | head -10          # 内存占用前十
ps -ef --forest | head -30              # 看父子层级
ps -o pid,ppid,stat,lstart,cmd -p 1234  # 指定 PID 的详细字段
pgrep -a sshd                           # 按名字列出 PID 与命令行
ps -eLf | grep java | head              # 查看线程
systemctl status nginx | head -5        # 服务型进程优先看 systemd 视角

STAT 状态列怎么读

状态含义常见原因
R运行或就绪正常执行中
S可中断睡眠等待事件或 IO,最常见
D不可中断睡眠等磁盘或网络 IO,需查存储
Z僵尸父进程未回收,查父进程逻辑
T已停止被作业控制或信号暂停
容器里 ps 默认只看到本容器命名空间的进程;要按宿主机视角排查,用 nsenter -t <PID> -p ps 或平台自带工具。
ps 输出是瞬时快照,短命进程可能正好错过;持续观察要用 top、循环采样或专业的监控采集,别拿一次 ps 结果当结论。

常用列含义

列含义用途
PID / PPID进程号与父进程号顺藤摸瓜找出是谁拉起的
%CPU / %MEM占用比例排序定位资源大户
VSZ / RSS虚拟内存与物理内存RSS 更接近真实占用
STAT进程状态配合状态表判断卡在哪一步
START / TIME启动时间与累计 CPU 时间判断运行时长与是否刚重启
要长期观察进程资源,用 pidstat -p <PID> 1 按秒采样,或看 /proc/<PID>/status 的 VmRSS 与 Threads 字段;ps 只给出某一瞬间的值。

易错点

  • 用 ps -ef | grep 名字 时 grep 自身会出现在结果里造成误判,改用 pgrep 或加 grep -v grep
  • 抓不到一闪而过的进程:ps 是快照,短命进程需要 watch 或循环采样
  • 对 D 状态进程用 kill -9 无效:要先定位卡住的存储或网络,再处理
  • 僵尸进程本身杀不掉,要先处理它的父进程或等父进程回收
  • 把 VSZ 当真实内存占用:虚拟内存包含映射的库与预留地址,判断内存泄漏看 RSS 与业务指标

数据来源与参考

  • procps-ng 文档
  • Linux 进程管理
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌