Linux 进程排查速查命令清单(适配后端服务场景)
优先推荐两套基础命令:
ps -ef→ 查父子进程、PID、启动命令
ps aux→ 查CPU、内存占用
一、基础查看
# 1. 完整进程列表(看PPID父进程,你最常用)
ps -ef
# 2. 带CPU、内存占用
ps aux
# 3. 树形展示进程父子关系(排查谁启动的进程)
ps -ef --forest
# BSD风格树形
ps axf
二、进程检索
# 方式1:管道过滤进程名
ps -ef | grep fastCrawler
# 去除grep自身那条记录
ps -ef | grep fastCrawler | grep -v grep
# 方式2(推荐)pgrep,只输出PID
pgrep fastCrawler
# 同时显示PID+命令
pgrep -a fastCrawler
# 根据PID反向查看进程详情
ps -ef | grep 12345
# 根据【父进程PID】查找所有子进程
ps -ef --ppid 12345
三、资源占用排查(程序卡顿、内存溢出、CPU打满)
# 按CPU使用率从高到低排序
ps aux --sort=-%cpu | head -15
# 按内存RSS占用从高到低排序
ps aux --sort=-rss | head -15
# 自定义输出:PID 用户 CPU 内存 启动时间 命令
ps -eo pid,user,pcpu,pmem,start,cmd --sort=-rss | head -15
# 实时动态查看进程(top)
top
# top 简化:只监控某个进程
top -p 12345
# htop(界面更友好,需安装 yum install htop / apt install htop)
htop
字段小注释:
%CPU:CPU占用百分比%MEM:物理内存占比RSS:进程实际占用物理内存VSZ:虚拟内存总量
四、线程排查(爬虫多线程/协程卡死定位)
# 查看进程内部所有线程(LWP线程ID)
ps -eLf | grep 12345
# top查看线程:进入top后按 H
top -p 12345
# 或者直接命令
top -H -p 12345
五、进程启停、信号、杀死进程
# 温柔终止进程(允许程序执行收尾、释放资源)
kill 12345
# 强制杀死(程序卡死收不到普通信号慎用)
kill -9 12345
# 批量杀掉匹配名称的所有进程
pkill fastCrawler
# 温柔批量关闭
pkill -15 fastCrawler
# 查看进程启动的工作目录
pwdx 12345
# 查看进程打开的文件、网络句柄(排查文件泄露、端口占用)
lsof -p 12345
六、网络关联排查(爬虫常用,查看进程占用端口)
# 根据PID查占用端口
netstat -tulnp | grep 12345
# 新版推荐 ss,更快
ss -tulnp | grep 12345
七、进阶:查看进程环境变量、启动完整信息
# 查看进程环境变量(替换12345为真实PID)
cat /proc/12345/environ | tr '\0' '\n'
# 查看完整启动命令(不会截断)
cat /proc/12345/cmdline | tr '\0' ' '
八、高频排障组合模板(直接复制改名称/PID就能用)
模板1:排查爬虫内存暴涨
ps aux --sort=-rss | grep fastCrawler
模板2:找出爬虫所有PID,准备重启
pgrep -a fastCrawler
模板3:优雅重启流程示例
# 1. 查询PID
pgrep fastCrawler
# 2. 优雅关闭
pkill fastCrawler
# 3. 等待几秒确认是否退出
sleep 2
pgrep fastCrawler
# 4. 没退出再强制杀(尽量避免直接kill -9)
pkill -9 fastCrawler
# 5. 重新启动你的爬虫程序
⚠️ 避坑提醒
- 优先 kill / pkill(信号15),尽量少直接
kill -9-9强制杀会丢失缓存、不执行资源释放,爬虫可能出现文件损坏、连接泄漏
grep xxx会自带一条grep进程记录,看到不用慌张/proc下信息仅进程存活时有效,进程消失文件同步删除