Linux进程查看命令大全:ps/top/htop/pgrep命令详解

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):

  1. 启动 top → 按 P 排序 → 找到高CPU的PID(如1234)。
  2. 输入 k → 输入PID → 先发SIGTERM(优雅终止),无效则用信号9强制终止。
  3. 用 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. 实战案例

批量终止异常进程(如挖矿程序):

  1. 启动 htop → 按 F6 选CPU排序 → 选中高CPU的异常进程(如cryptominer)。
  2. 按 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​:精准查找,自动化管理利器。
阅读剩余