在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.txttop 界面关键指标:
- 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
# 启动
htophtop 优势:
- 彩色显示,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),最后定位到具体进程,这是排查性能问题的黄金三步法。
评论