介绍
top 命令相当于windows的任务管理器,实时监视 CPU、内存、进程 的占用情况
启动
直接在终端输入 top;退出:按 q
常用启动参数
# 每2秒刷新一次,总共刷新5次后退出
top -d 2 -n 5
# 只监控指定PID
top -p 1234
# 监控多个进程
top -p 1234,5678
# 批处理模式输出,适合重定向到文件
top -b -n1 > top.txt
界面
q 或 ctrl+c 退出top
解释
第一行
同 uptime 命令的执行结果
系统时间:07:27:05
运行时间:up 1:57 min,
当前登录用户: 3 user
cpu平均负载 load average: 0.00, 0.00, 0.00。average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
第二行:进程概况
Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie
total:总进程数running:正在运行sleeping:休眠(等待资源)stopped:暂停进程zombie:僵尸进程(进程已结束,父进程未回收)
第三行:cpu概况
%Cpu(s): 1.2 us, 0.5 sy, 0.0 ni, 97.8 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st
ususer:用户态CPU(应用程序占用)sysystem:内核态CPUninice:调整过nice值的进程占用ididle:空闲CPU,越高越好waiowait:等待IO(磁盘读写),wa高=磁盘瓶颈hihardware interrupt:硬件中断sisoftware interrupt:软中断ststeal:被虚拟机抢占的CPU(云服务器)
提示:按键盘 1:展开多核CPU,单独显示每个核心使用率
第四行:内存概况
MiB Mem : 7845 total, 1200 free, 3500 used, 3145 buff/cache
单位MiB
total:总内存free:空闲内存used:已使用内存buff/cache:缓冲区+页缓存(Linux会尽量利用内存做缓存)
第五行:交换分区 Swap
MiB Swap: 4095 total, 4095 free, 0 used. 3800 avail Mem
used:swap使用量,swap持续上涨代表内存不足avail Mem:可用内存(包含可回收缓存)
进程列表字段说明
默认列:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
| 字段 | 含义 |
|---|---|
| PID | 进程ID |
| USER | 进程所属用户 |
| PR | 进程优先级 |
| NI | Nice值,范围 -20 ~ 19;越小优先级越高,root可设负数 |
| VIRT | 虚拟内存(VMSIZE):进程申请的全部内存,包含swap、共享库 |
| RES | 常驻内存(RSS):物理内存占用,不含swap,看这个判断内存消耗 |
| SHR | 共享内存 |
| S | 进程状态: R运行 S休眠 D不可中断休眠(IO阻塞) Z僵尸 T停止 |
| %CPU | 进程CPU占用(默认单核心占比,超过100%代表多线程) |
| %MEM | 物理内存占总内存百分比 |
| TIME+ | 进程累计CPU时间 |
| COMMAND | 进程名/命令 |
提示:按 f 可以自定义显示/隐藏字段,按 q 返回。
快捷键
运行top时直接按键
| 按键 | 作用 |
|---|---|
| q | 退出top |
| 1 | 展开/收起多核CPU |
| k | 杀死进程,输入PID,回车,再输入信号(默认15正常终止,9强制杀) |
| r | 修改进程nice值,输入PID,再输入nice值 |
| s | 修改刷新间隔,单位秒 |
| h | 帮助 |
| z | 彩色模式开关 |
| c | 显示完整命令行 / 只显示程序名切换 |
| i | 隐藏空闲进程 |
排序相关
- N – 以 PID 的大小的顺序排列表示进程列表
- P – 以 CPU 占用率大小的顺序排列进程列表
- M – 以内存占用率大小的顺序排列进程列表
- T:根据时间/累计时间进行排序。
常见问题判断
- us很高:业务程序CPU繁忙,代码/循环问题
- wa很高:磁盘IO瓶颈,数据库大量读写
- swap used持续上升:物理内存不够,频繁换页,性能暴跌
- 存在Z僵尸进程:父进程没有wait回收,需要处理父进程
- 单进程%CPU >100%:该进程是多线程,占用多个CPU核心
top 和 htop 区别
top:系统自带,无需安装,基础监控htop:第三方工具,界面更友好,鼠标支持,树形进程查看,需要yum install htop/apt install htop
