当前位置:首页>Linux>Linux进程排查神器!ps命令从入门到实战,运维必备干货

Linux进程排查神器!ps命令从入门到实战,运维必备干货

  • 2026-10-11 06:03:09
Linux进程排查神器!ps命令从入门到实战,运维必备干货

做Linux运维的小伙伴,日常工作中进程排查、服务监控、性能分析是高频操作。而ps作为linux最核心的进程查看命令,是排查问题的第一利器。

但很多人只会 ps -ef | grep 进程名 这一个用法,遇到进程卡死、内存cpu占用异常、僵尸进程排查、父子进程溯源等场景就束手无策。

今天这篇文章,一次性讲透ps命令的主流用法、参数区别、字段解读和高阶排查技巧,看完可以直接用于实际故障处理!

一、ps命令的两套参数体系

多新手疑惑:为什么有的人用 ps aux,有的人用 ps -ef?

其实ps命令有两套独立参数规范,混用会导致输出异常,企业运维中两套各有适用场景,建议统一使用习惯:

1. BSD风格(无横杠):ps aux

侧重展示资源占用(cpu、内存占比),适合性能排查、找耗资源进程,是运维查负载的首选。

2. UNIX风格(有横杠):ps -ef

侧重展示进程关系(pid、父pid、启动用户),适合溯源进程来源、排查父子进程异常、僵尸进程。

总结起来就是:查资源用 ps aux,查进程关系用 ps -ef,两套参数不要混用!

二、ps实战基础

先掌握最常用的基础指令,看懂输出字段,是进阶排查的前提。

1. 查看系统所有进程

#UNIX风格:查看所有进程,侧重父子关系ps -ef#BSD风格:查看所有进程,侧重资源占用ps aux

2. 关键参数字段解读

ps -ef 核心字段

  • UID:进程启动用户

  • PID:进程唯一ID(杀进程、监控的核心标识)

  • PPID:父进程ID(排查进程被谁启动、孤儿进程关键)

  • STIME:进程启动时间

  • CMD:进程启动命令

ps aux 核心字段

  • %CPU:进程CPU占用百分比

  • %MEM:进程物理内存占用百分比

  • RSS:实际占用物理内存大小

  • STAT:进程状态(重点!下文详解)

  • START:进程启动时间

3. 进程状态 STAT 详解

通过STAT状态可快速判断进程异常,无需逐行分析日志:

  • R:运行中/就绪状态,正常工作

  • S:休眠状态,等待资源/请求,正常

  • D:不可中断休眠(磁盘IO阻塞),大概率卡死

  • Z:僵尸进程(子进程退出、父进程未回收),系统资源泄漏

  • T:暂停状态,被暂停执行

三、ps高频实战场景

ps日常主要用于查进程、杀进程、监控服务、排查异常等场景

场景1:精准查询指定服务进程

最常用的组合命令,排查应用服务是否启动、获取业务的pid:

#通用查询:查询nginx进程ps -ef | grep nginx#精准过滤(排除grep自身进程)ps -ef | grep nginx | grep -v grep#BSD风格查询资源占用ps aux | grep mysql

场景2:按用户/pid筛选进程

服务器多用户部署服务时,快速筛选指定用户进程:

#查看root用户所有进程ps -u root#查看指定PID进程详情ps -p 12345#批量查看多个PID进程ps -p 1234,5678

场景3:查询进程父子关系(溯源启动来源)

排查未知进程、恶意进程、服务自动重启异常必备:

#树形展示进程父子关系,清晰直观ps -efH#可视化进程树(更美观)pstree -p

场景4:排查僵尸进程(解决资源占用异常)

服务器负载莫名升高、内存泄漏,大概率是僵尸进程堆积:

#筛选所有僵尸进程ps aux | grep Z#统计僵尸进程数量ps aux | grep -c Z

处理思路:找到僵尸进程的父进程pid,重启父进程即可回收僵尸进程,无需重启服务器。

场景5:查找服务器CPU/内存占用最高的进程

服务器卡顿、负载高时,一键定位耗资源进程:

#按CPU使用率降序排序ps aux --sort=-%cpu#按内存使用率降序排序ps aux --sort=-%mem#只展示Top10耗内存进程ps aux --sort=-%mem | head -10

场景6:动态监控服务进程状态

服务重启、上线部署时,实时跟踪进程启动/退出状态:

#每秒刷新一次,监控nginx进程状态watch -n 1 "ps -ef | grep nginx | grep -v grep"

场景7:精准自定义输出字段

默认输出信息冗余,可自定义只展示需要的字段,适配脚本监控:

#只输出PID、父PID、CPU占比、内存占比、启动命令ps -eo pid,ppid,%cpu,%mem,cmd

四、ps+kill的实战管理

ps的核心价值不止是查进程,更是配合kill完成进程管控,解决服务卡死、端口占用问题。

1. 常规终止进程

#先查PIDps -ef | grep nginx#正常终止进程(优雅退出,释放资源)kill 12345

2. 强制kill进程

#强制杀死进程(暴力终止,慎用!)kill -9 12345

3. 批量杀死同类进程

#批量杀死所有nginx进程ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9

五、注意事项

误区1:混用两套参数

不要写 ps -aux(多余横杠),会导致参数解析异常,输出结果错乱,严格区分 ps aux 和 ps -ef。

误区2:grep查询不排除自身进程

ps -ef | grep 进程名 会多出一条grep自身进程,排查时易误判,务必加 grep -v grep 过滤。

误区3:滥用 kill -9

kill -9 是强制暴力终止,会导致进程未释放文件句柄、内存资源,引发数据丢失、端口残留问题,优先用普通kill,卡死再用-9。

六、核心参数

需求场景

核心命令

查看所有进程(查关系)

ps -ef

查看所有进程(查资源)

ps aux

查询指定服务进程

ps -ef | grep 进程名 | grep -v grep

查看进程树

ps -efH / pstree -p

排查僵尸进程

ps aux | grep Z

查找高CPU/内存进程

ps aux --sort=-%cpu / -%mem

自定义进程字段输出

ps -eo 字段1,字段2...

动态监控进程状态

watch -n 1 "ps -ef | grep 进程名"

七、总结

ps命令看似简单,却是Linux运维进程排查、性能调优、故障定位的基石。不用死记硬背所有参数,只需记住:查关系用ef、查资源用aux、异常看STAT、卡顿排序找TOP进程,就能搞定绝大多数工作场景。

如果你觉得文章对你的运维工作有帮助,记得点赞加关注。

#运维  #linux运维  #linux实战  #ps命令的实战用法

最新文章

随机文章