Linux进程查看命令大全:ps/top/htop/pgrep命令详解
Linux服务器突然卡死、进程无响应?这篇《Linux进程管理终极指南》教你用ps/top/htop/pgrep四大命令快速定位问题!从基础用法到实战案例,3分钟掌握运维必备技能,轻松排查CPU/内存占用、僵尸进程等难题.
一、ps:静态进程快照(快速查询)
作用:生成系统当前进程的“快照”,适合脚本集成与快速检查。
1. 核心优势
- 灵活参数:支持Unix风格(如
-ef)和BSD风格(如aux)。 - 信息全面:显示PID、CPU/内存占用、进程状态(如
R=运行,Z=僵尸)、启动命令等。 - 轻量低耗:无需实时刷新,资源占用极低。
2. 常用操作
- 查看所有进程:
ps aux # BSD风格(推荐):显示用户、CPU/内存、启动时间等 ps -ef # Unix风格:显示完整进程树和命令路径关键字段:
PID(进程ID)、%CPU/%MEM(资源占用)、STAT(状态)、COMMAND(命令)。 - 过滤特定进程:
ps aux | grep nginx # 查找Nginx相关进程 ps -u MySQL # 查看MySQL用户的进程 - 高级用法:
- 进程树结构:
ps -ef --forest(缩进显示父子进程关系)。 - 排序高CPU进程:
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -5(前5个高CPU进程)。 - 线程信息:
ps -eLf(所有线程)或ps -T -p PID(指定进程的线程)。
- 进程树结构:
3. 常见问题
- 僵尸进程处理:
ps -eo pid,ppid,stat,cmd | grep 'Z'定位父进程(PPID),谨慎终止父进程。 - ps aux vs ps -ef:前者更直观(含资源占比),后者更适合分析进程依赖关系。
二、top:动态资源监控(实时交互)
作用:实时刷新系统资源与进程状态,适合排查高负载问题。
1. 核心功能
- 系统概览:显示CPU、内存、交换分区使用率,平均负载(1/5/15分钟)。
- 进程排序:支持按CPU、内存、运行时间动态排序。
- 交互操作:终止进程、调整优先级、切换视图。
2. 基础操作
- 启动:直接输入
top(默认3秒刷新),或自定义间隔top -d 5(每5秒刷新)。 - 监控特定用户:
top -u apache。
3. 交互命令
- 排序:
P(CPU)、M(内存)、T(运行时间)。 - 进程操作:
- 终止进程:
k→ 输入PID → 发送SIGTERM(默认)或SIGKILL(信号9强制终止)。 - 调整优先级:
r→ 输入PID → 修改Nice值。
- 终止进程:
- 视图切换:
1(展开CPU核心详情)、H(显示线程)。
4. 输出解读
- 负载均值:超过CPU核心数可能过载(如4核机器负载>4需关注)。
- CPU使用率:
us(用户程序)、sy(内核)、id(空闲,越高越优)。 - 内存:
buff/cache是磁盘缓存(可用内存≈free + buff/cache)。
5. 实战案例
定位高CPU进程(如Nginx):
- 启动
top→ 按P排序 → 找到高CPU的PID(如1234)。 - 输入
k→ 输入PID → 先发SIGTERM(优雅终止),无效则用信号9强制终止。 - 用
ps -p 1234确认进程是否结束。
三、htop:增强版top(可视化操作)
作用:比top更直观的交互工具,支持鼠标与彩色界面。
1. 核心优势
- 彩色显示:不同状态进程用颜色区分(如绿色=运行,红色=高负载)。
- 鼠标支持:点击排序、滚动查看完整命令行。
- 树状视图:按
F5显示进程父子关系。 - 扩展信息:实时显示每个CPU核心的使用率条形图。
2. 常用操作
- 启动:直接输入
htop,或指定用户/排序字段(如htop -u mysql -s MEM按内存排序)。 - 交互快捷键:
- 排序:
F6选择字段(CPU/内存/PID)。 - 优先级:
F7/F8调整Nice值。 - 终止进程:
F9发送信号(默认SIGTERM,可选SIGKILL)。 - 树状视图:
F5。 - 批量操作:
F9+ 标记多个进程后批量终止。
- 排序:
3. 实战案例
批量终止异常进程(如挖矿程序):
- 启动
htop→ 按F6选CPU排序 → 选中高CPU的异常进程(如cryptominer)。 - 按
Space标记多个进程 → 按F9发送SIGKILL强制终止。
四、pgrep:精准进程查找(脚本必备)
作用:通过进程名快速查找PID,适合自动化管理。
1. 核心优势
- 精准匹配:支持完全匹配(
-x)和模式匹配(如pgrep nginx)。 - 多条件过滤:通过
-u(用户)、-G(组)、-t(终端)筛选。 - 输出灵活:可自定义分隔符(
-d)或显示进程名(-l)。
2. 常用操作
- 基础查找:
pgrep nginx(返回所有Nginx进程的PID)。 - 显示进程名与PID:
pgrep -l nginx(如1234 nginx: worker)。 - 高级过滤:
- 最近启动的进程:
pgrep -n bash。 - 特定终端的进程:
pgrep -t pts/1。 - 排除指定进程:
pgrep -v nginx(不包含nginx的进程)。
- 最近启动的进程:
3. 搭配pkill终止进程
pgrep -l mysql # 确认MySQL进程PID
pkill -9 mysqld # 强制终止(慎用!优先用pgrep + kill PID)
pgrep mysql # 再次确认是否终止
五、综合场景与最佳实践
1. 排查性能瓶颈
- 用
htop按F6选CPU排序 → 定位高占用进程 → 检查配置或日志(如Nginx的/var/log/nginx/error.log)。
2. 批量管理进程
- 查找工作进程:
ps aux | grep 'worker'→ 用pgrep -f worker | xargs kill -9批量终止(谨慎操作)。
3. 最佳实践总结
- 优先htop:交互直观,适合日常监控。
- 脚本用ps/pgrep:轻量且可定制输出(如
ps -o pid,cmd --sort=-%cpu)。 - 终止进程原则:先尝试
kill PID(SIGTERM优雅终止),无效再kill -9 PID(强制终止)。 - 定期检查僵尸进程:
ps -eo stat | grep 'Z'。
总结
- ps:静态快照,适合脚本与快速查询。
- top:实时监控,经典交互工具。
- htop:增强可视化,操作更便捷。
- pgrep:精准查找,自动化管理利器。
阅读剩余
网站声明
本站内容可能存在水印或引流等信息,请擦亮眼睛自行鉴别;以免上当受骗;
本站提供的内容仅限用于学习和研究目的,不得将本站内容用于商业或者非法用途;
