在IDC运维日常工作中,最常见的问题之一就是"服务器怎么变慢了"。这时候,掌握Linux进程管理和性能监控工具就成了一项必备技能。今天我们来系统学习top、htop和ps三个核心工具。

一、ps —— 快照式进程查看

ps 是最基础的进程查看命令,它抓取的是某一瞬间的进程状态快照。

# 查看所有进程
ps aux

# 按CPU使用率排序
ps aux --sort=-%cpu | head -20

# 按内存使用率排序
ps aux --sort=-%mem | head -20

# 查看指定用户的进程
ps -u www-data

# 树形显示进程父子关系
ps auxf

常用参数解读:

  • a:显示所有用户的进程
  • u:以用户友好格式显示
  • x:显示没有控制终端的进程(守护进程)
  • f:显示进程树

二、top —— 实时交互式监控

top 是Linux运维最常用的命令之一,提供实时、动态的系统进程视图。

# 基本用法
top

# 指定刷新间隔(秒)
top -d 2

# 只显示特定用户的进程
top -u mysql

# 批处理模式(适合脚本)
top -b -n 1 > top_output.txt

top 界面关键指标:

  • load average:1分钟、5分钟、15分钟的系统平均负载。这个值超过CPU核心数时说明系统过载
  • %Cpu(s):us(用户态)、sy(内核态)、id(空闲)、wa(I/O等待)——wa高通常说明磁盘是瓶颈
  • RES:进程实际使用的物理内存(不是虚拟内存)
  • S:进程状态,R=运行、S=睡眠、D=不可中断睡眠(通常是等I/O)、Z=僵尸

top 交互快捷键:

  • 1:展开/折叠每个CPU核心
  • P:按CPU使用率排序
  • M:按内存使用率排序
  • k:输入PID杀进程
  • c:显示完整命令行

三、htop —— 更友好的 top 替代品

htop 是 top 的增强版,彩色界面、支持鼠标操作、可视化更好。

# 安装 htop
apt install htop      # Debian/Ubuntu
yum install htop      # CentOS/RHEL

# 启动
htop

htop 优势:

  • 彩色显示,CPU/内存/Swap 用进度条直观展示
  • 支持鼠标点击排序、杀进程
  • 可以水平/垂直滚动查看完整命令行
  • F3搜索、F5树形视图、F9杀进程
  • 不需要记PID,方向键选择进程直接操作

四、实战场景

场景1:CPU 100%,谁在搞鬼?

# 用 top 快速定位
top -c
# 按 P 排序,看哪个进程 CPU 占用最高
# 记下 PID,进一步分析:
strace -p PID        # 跟踪系统调用
lsof -p PID          # 查看打开的文件

场景2:内存快满了

# 查看内存占用排行
ps aux --sort=-%mem | head -10

# 查看具体进程的内存详情
pmap -x PID

# 检查是否内存泄漏
watch -n 2 'ps aux | grep 进程名'

场景3:服务器负载高但CPU不高

# 这种情况通常是 I/O 等待
top
# 观察 %wa (I/O wait) 是否很高
# 进一步排查:
iostat -x 2 5       # 查看磁盘I/O
iotop                # 查看哪个进程在大量读写

五、总结

ps 用于快速快照,top 用于实时监控,htop 用于更友好的交互体验。三个工具配合使用,基本能覆盖90%的服务器性能排查场景。记住:先看整体(load average),再看分类(CPU/内存/I/O),最后定位到具体进程,这是排查性能问题的黄金三步法。