目录
Top (Table of Processes)是 Linux 系统中最常用的实时系统监控工具,能够动态显示系统进程的资源占用情况(CPU、内存、磁盘 I/O 等),是排查性能问题的核心工具之一。它类似于 Windows 的“任务管理器”,但功能更强大、更灵活。
1. 基本用法
直接输入 top 命令启动实时监控界面:
top
- 默认每 3 秒刷新一次,按
q键或Ctrl+C组合键退出。
2. 界面详解
启动 top 后,界面分为两部分:
2.1 系统概览区
top - 15:12:56 up 64 days, 2:30, 2 users, load average: 0.15, 0.03, 0.08
Tasks: 207 total, 1 running, 206 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.1 us, 2.9 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 1756.0 total, 100.9 free, 1247.7 used, 407.8 buff/cache
MiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 2590.0 avail Mem
-
第一行:系统运行时间与负载
15:12:56:当前时间up 64 days, 2:30:系统已运行 64 天 2 小时 30 分钟2 users:当前登录用户数load average: 0.15, 0.03, 0.08:1分钟、5分钟、15分钟的系统平均负载- 负载值 ≈ CPU 核心数 表示满载
- 超过核心数表示系统过载
-
第二行:任务(进程)统计
207 total:总进程数1 running:正在运行的进程数206 sleeping:睡眠状态的进程数0 stopped/zombie:停止或僵尸进程(>0 表示异常)
-
第三行:CPU 使用率(%Cpu(s))
us:用户进程占用 CPU 百分比(重点关注)sy:系统(内核)占用 CPU 百分比ni:调整过优先级(nice)的进程占用id:空闲 CPU 百分比wa:I/O 等待占用 CPU 百分比(高表示磁盘瓶颈)hi:硬件中断si:软件中断st:被虚拟机偷走的时间(仅虚拟化环境)
-
第四行:物理内存使用(MiB Mem)
total:总内存free:完全空闲内存used:已使用内存buff/cache:缓冲区和缓存占用- 注意:Linux 会用空闲内存做缓存,所以
free小 ≠ 内存不足
-
第五行:交换分区使用(MiB Swap)
used > 0表示物理内存不足,开始使用 Swap(应尽量避免)avail Mem:可用内存(包括可回收的缓存)
2.2 进程详情区

| 列名 | 说明 |
|---|---|
| PID | 进程 ID |
| PPID | 父进程ID |
| USER | 运行进程的用户 |
| PR | 优先级(Priority) |
| NI | nice 值(负值优先级高,正值低) |
| VIRT | 虚拟内存使用量(KB/MB/GB) |
| RES | 常驻内存使用量(实际物理内存,重点关注) |
| SHR | 共享内存大小 |
| S | 进程状态:<br>R=运行, S=睡眠, D=不可中断睡眠(I/O), Z=僵尸, T=停止 |
| %CPU | CPU 使用率(可能超过 100%,多核) |
| %MEM | 内存使用百分比 |
| TIME+ | 进程累计 CPU 时间(百分之一秒) |
| COMMAND | 命令名或命令行 |
3. 交互式命令
| 快捷键 | 功能说明 |
|---|---|
|
| 按CPU使用率排序(默认) |
|
| 按内存使用率排序 |
|
| 按累计CPU时间排序 |
N | 按 PID 排序 |
d或s | 修改刷新间隔 |
|
| 终止进程(输入PID后选择信号,如 |
|
| 调整进程优先级( |
|
| (数字1)显示多核CPU负载(按逻辑CPU分列) |
|
| 过滤指定用户的进程(如 |
|
| 显示完整命令行(默认仅显示命令名) |
l | 开启/关闭负载信息显示 |
m | 开启/关闭内存信息显示 |
|
| 自定义显示字段(添加/删除列,如添加 |
|
| 切换彩色显示 |
4. 命令行参数
top -d 6 # 设置刷新间隔为6秒
top -p 8888 # 监控指定PID(可多个: -p 999,888)
top -u nginx # 只显示某用户的进程
top -n 3 # 刷新3次后自动退出
top -b -n 1 > top.log # 批处理模式(输出到文件)
top -H -p 6789 # 显示特定进程的所有线程
top -o %MEM # 按内存排序,发现 Java 进程 RES 持续增长,结合 `jstat` 检查堆内存
5. 高级技巧
5.1 高亮运行中进程
按 b 开启/关闭粗体显示(运行状态进程)
5.2 筛选进程
按 o 后输入条件(如 COMMAND=java 过滤Java进程)
5.3 保存列布局
按 f 选择字段 → 按 s 保存配置
5.4 内存单位切换
启动时加 -E(如 top -E m 显示MB,-E g 显示GB)
5.5 远程监控
ssh user@remote_host "top -b -n 1 -o %CPU" # 远程执行单次top并返回结果
ssh -t user@remote_host "htop" # 需远程安装htop,交互式远程监控
6. 实战案例
6.1 定位高CPU占用进程
- 执行
top,观察%CPU列。 - 输入
P确保按CPU排序,确认高占用进程。 - 输入
k,根据提示输入PID,尝试终止进程(若为异常进程)。
6.2 监控内存泄漏
- 执行
top,观察%MEM列。 - 输入
M按内存排序,确认内存占用持续上升的进程。 - 使用
pmap <PID>或编程语言自带的内存分析工具进一步诊断。
6.3 监控系统负载峰值
- 执行
top -d 1 -n 60,每1秒刷新一次,持续监控60次。 - 观察平均负载(
load average)是否超过CPU核心数。 - 结合CPU使用率中的
wa值,判断是否为I/O瓶颈或计算密集型任务导致。
6.4 容器内进程监控
# 使用容器短ID获取完整ID
docker inspect --format='{{.Id}}' <短ID或名称>
# 容器内进程监控
top -p $(cat /sys/fs/cgroup/pids/docker/$(docker inspect --format='{{.Id}}' <短ID或名称> )/tasks | paste -sd,)
7. 替代工具推荐
-
htop:交互更强(支持鼠标操作)
-
atop:记录历史资源数据(持久化监控工具)
-
btop:支持更多插件和自定义指标
-
glances:跨平台监控工具
-
nmon:专业级性能监控
4200

被折叠的 条评论
为什么被折叠?



