Linux-top
- top
-
- 1、作用
- 2、格式
- 3、参数
-
- [a、 top 启动参数(命令行直接传入)](#a、 top 启动参数(命令行直接传入))
- [b、 top 交互指令(运行中按键生效)](#b、 top 交互指令(运行中按键生效))
-
- [1. 排序相关指令(核心:按资源类型排序)](#1. 排序相关指令(核心:按资源类型排序))
- [2. 筛选/显示相关指令](#2. 筛选/显示相关指令)
- [3. 控制相关指令](#3. 控制相关指令)
- [4、 top 界面核心字段解读](#4、 top 界面核心字段解读)
-
- [a. 系统概览区(前 5 行)](#a. 系统概览区(前 5 行))
- [b. 进程列表区(重点内存/CPU 字段)](#b. 进程列表区(重点内存/CPU 字段))
- 使用场景
-
- [1、 **每秒刷新,监控指定进程**](#1、 每秒刷新,监控指定进程)
- [2、 **显示完整命令,监控 nginx 用户进程**](#2、 显示完整命令,监控 nginx 用户进程)
- [3、 **批处理模式,保存 10 次监控数据到文件**](#3、 批处理模式,保存 10 次监控数据到文件)
- [4、 **监控进程的所有线程**](#4、 监控进程的所有线程)
top
1、作用
top 是 Linux 系统中实时监控进程和系统资源 的核心工具,支持通过启动参数 (命令行传入)和交互指令 (运行中按键)调整监控维度,适用于排查 CPU/内存占用、进程异常等场景。以下是 启动参数 和 交互指令 的详细说明,按功能分类整理:
2、格式
bash
复制代码
top [参数]
3、参数
a、 top 启动参数(命令行直接传入)
启动参数用于设置 top 的初始监控状态,格式为 top [参数],常用参数如下:
| 参数 |
作用 |
实用场景 |
-d <秒数> |
设置刷新间隔(默认 3 秒),例如 top -d 1 表示每秒刷新一次 |
快速监控资源波动(如排查突发 CPU 占用) |
-p <PID1,PID2...> |
只监控指定 PID 的进程,多个 PID 用逗号分隔,例如 top -p 1234,5678 |
聚焦单个/多个进程的资源变化(如排查特定服务内存泄漏) |
-u <用户名> |
只监控指定用户的进程,例如 top -u nginx |
排查某用户的进程是否占用过高资源 |
-c |
显示进程的完整命令行 (默认只显示命令名),例如 java -jar app.jar 而非 java |
区分同名进程(如多个 python 脚本) |
-b |
批处理模式 ,输出结果可重定向到文件(非交互式),常配合 -n 使用 |
记录资源监控数据(如 top -b -n 10 > top.log 保存 10 次输出) |
-n <次数> |
设置批处理模式下的输出次数,例如 top -b -n 5 表示输出 5 次后退出 |
定时采集资源数据,用于后续分析 |
-H |
显示线程级监控,将进程的子线程单独列出 |
排查多线程程序的线程资源占用(如某线程 CPU 100%) |
-i |
忽略空闲进程(CPU 使用率为 0 的进程),只显示活跃进程 |
快速定位消耗资源的进程,减少输出冗余 |
b、 top 交互指令(运行中按键生效)
启动 top 后进入交互式界面,通过按键可动态调整监控维度,无需重启命令,这是 top 最灵活的用法。
1. 排序相关指令(核心:按资源类型排序)
| 按键 |
作用 |
实用场景 |
P(大写) |
按 CPU 使用率 倒序排序(默认排序方式) |
定位 CPU 占用最高的进程 |
M(大写) |
按 内存使用率 倒序排序 |
定位内存占用最高的进程(最常用) |
T(大写) |
按 累计 CPU 时间 倒序排序 |
查看进程启动以来的总 CPU 消耗 |
N(大写) |
按 PID 编号 倒序排序 |
按进程 ID 查找特定进程 |
R(大写) |
切换升序/倒序排序(当前排序的反向) |
查看资源占用最低的进程 |
2. 筛选/显示相关指令
| 按键 |
作用 |
实用场景 |
u |
输入用户名,筛选该用户的进程 |
只监控某用户的进程(如 root/mysql) |
k |
输入 PID,终止指定进程(需确认信号值,默认 15 优雅终止,9 强制杀死) |
快速终止异常高资源进程(谨慎使用) |
c |
切换命令名/完整命令行 显示(与启动参数 -c 效果一致) |
区分同名进程的具体执行参数 |
i |
切换显示/隐藏空闲进程 (与启动参数 -i 效果一致) |
过滤无资源消耗的空闲进程 |
H |
切换进程/线程 视图(与启动参数 -H 效果一致) |
查看进程的子线程资源占用 |
f |
进入字段管理界面 ,自定义显示的列(如添加内存字段 SWAP) |
按需显示关键指标,隐藏冗余列 |
o |
进入列排序界面,调整列的显示顺序 |
把关注的列(如 %MEM)移到前面 |
3. 控制相关指令
| 按键 |
作用 |
实用场景 |
s |
修改刷新间隔(输入秒数,如 1 表示每秒刷新) |
调整监控实时性(数值越小越灵敏) |
空格 |
强制立即刷新当前界面 |
手动触发刷新,查看最新资源状态 |
W |
保存当前 top 配置(排序、显示列等)到 ~/.toprc |
下次启动 top 直接使用自定义配置 |
q |
退出 top 界面 |
结束监控 |
4、 top 界面核心字段解读
启动 top 后,界面分为 系统概览区 和 进程列表区,重点关注以下字段:
a. 系统概览区(前 5 行)
复制代码
top - 10:00:00 up 10 days, 2:00, 2 users, load average: 0.50, 0.30, 0.20
Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 92.0 id, 0.0 bl, 0.0 wd, 0.0 hi, 0.0 si
MiB Mem : 7856 total, 1024 free, 3072 used, 3760 buff/cache
MiB Swap: 2048 total, 1800 free, 248 used. 4000 available Mem
| 字段 |
含义 |
load average: 0.50, 0.30, 0.20 |
系统 1/5/15 分钟平均负载(CPU 任务队列长度) |
%Cpu(s): us/sy/id |
us=用户态 CPU 占比,sy=内核态 CPU 占比,id=空闲 CPU 占比 |
Mem: total/used/free/buff/cache |
物理内存的总容量/已用/空闲/缓存占用 |
Swap: total/used/free |
交换分区的总容量/已用/空闲 |
available Mem |
程序实际可申请的内存(核心指标,比 free 更有参考价值) |
b. 进程列表区(重点内存/CPU 字段)
| 字段 |
含义 |
参考价值 |
PID |
进程 ID |
唯一标识进程 |
USER |
进程所属用户 |
排查用户进程资源占用 |
%CPU |
进程当前 CPU 使用率 |
实时 CPU 消耗指标 |
%MEM |
进程当前内存使用率 |
实时内存消耗指标(核心) |
RES |
进程占用的物理内存(单位 KB/MB) |
真实物理内存占用(同 ps 的 RSS) |
VIRT |
进程占用的虚拟内存 |
参考价值低(包含未使用内存) |
SHR |
进程共享的内存大小 |
辅助判断(共享库占用,非独占内存) |
COMMAND |
进程命令名/完整命令行 |
识别进程用途 |
使用场景
1、 每秒刷新,监控指定进程
bash
复制代码
top -d 1 -p 1234 # 每秒刷新,只看 PID=1234 的进程
2、 显示完整命令,监控 nginx 用户进程
bash
复制代码
top -u nginx -c # 只看 nginx 用户的进程,显示完整命令行
3、 批处理模式,保存 10 次监控数据到文件
bash
复制代码
top -b -n 10 -d 2 > top_monitor.log # 每 2 秒输出一次,共 10 次,保存到日志
4、 监控进程的所有线程
bash
复制代码
top -H -p 1234 # 查看 PID=1234 进程下的所有线程资源占用