Linux中top详解
编辑一、什么是 top?
top 是一个动态、实时的系统监控工具。它提供了一个不断更新的命令行仪表盘,显示系统摘要信息以及当前正在运行的进程列表,并按 CPU 使用率排序(默认情况下)。它是快速了解系统负载和定位资源消耗大户的首选工具。
二、启动与退出
启动: 在终端中直接输入命令:
top退出: 按下键盘上的
q(quit) 键即可。
三、top 界面详解
运行 top 后,屏幕会分为两部分:上部是系统摘要信息,下部是进程列表。
1. 顶部系统摘要信息 (System Summary)
第一行:系统概览
top - 18:20:30 up 10 days, 1:45, 1 user, load average: 0.05, 0.10, 0.1518:20:30: 当前系统时间。up 10 days, 1:45: 系统已运行时间。表示系统连续运行了10天1小时45分钟。1 user: 当前登录到系统的用户数量。load average: 0.05, 0.10, 0.15: 系统平均负载,这是非常重要的指标。它显示的是过去1分钟、5分钟和15分钟的系统平均负载。对于单核CPU,1.00表示完全满负荷。如果有4个核心,则满负荷状态是4.00。
第二行:任务(进程)
Tasks: 200 total, 1 running, 199 sleeping, 0 stopped, 0 zombietotal: 当前运行的总进程数。running: 正在运行或准备运行的进程数。sleeping: 处于睡眠状态的进程数(等待某个事件发生)。stopped: 被停止的进程数(例如通过Ctrl+Z)。zombie: 僵尸进程数。如果这个数字不为0,表示有子进程在结束后其父进程没有正确地回收它。这是需要关注的异常情况。
第三行:CPU 使用率
%Cpu(s): 1.5 us, 0.5 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st这是理解系统压力的核心。这些值表示CPU时间在各种状态下的百分比:
us(user): 运行普通用户进程所花费的CPU时间。sy(system): 运行系统内核进程所花费的CPU时间。ni(nice): 运行被调整过优先级(nice)的用户进程所花费的时间。id(idle): CPU空闲时间百分比。这个值越高,说明CPU越空闲。wa(I/O wait): CPU等待I/O操作(如磁盘、网络)完成的时间。这个值如果持续很高,通常是磁盘或网络成为瓶颈的标志。hi(hardware interrupts): 处理硬件中断所花费的时间。si(software interrupts): 处理软件中断所花费的时间。st(steal time): 在虚拟化环境中,被宿主机“偷走”的时间。如果你的虚拟机(VPS)这个值很高,说明宿主机资源紧张。
第四、五行:物理内存 (RAM) 和交换分区 (Swap) 使用情况
MiB Mem : 7853.4 total, 102.4 free, (总内存, 完全空闲的内存)
5232.1 used, (已使用的内存)
2518.9 buff/cache (被用作缓存和缓冲的内存)
MiB Swap: 2048.0 total, (交换分区总大小)
1500.0 free, (交换分区剩余)
548.0 used. (已使用的交换分区)关键理解: Linux 会充分利用空闲的内存来缓存(cache)和缓冲(buffer)磁盘数据,以提升性能。因此,
free内存很少是正常现象,不代表内存不足。真正需要关注的是used和buff/cache。如果
Swap的used值很高,说明物理内存不足,系统正在频繁地使用硬盘作为虚拟内存,这会严重降低系统性能。
2. 下部进程列表
这部分列出了当前的所有进程,默认按 CPU 使用率 (%CPU) 降序排列。
PID: 进程ID。
USER: 进程所有者的用户名。
PR: 进程优先级。
NI: Nice值。负值表示高优先级,正值表示低优先级。
VIRT: 进程使用的虚拟内存总量。
RES: 进程使用的、未被换出的物理内存(单位通常是KB或MB)。这是你最应该关注的内存指标。
SHR: 共享内存大小。
S: 进程状态(R=运行, S=睡眠, Z=僵尸)。
%CPU: 进程自上次更新以来使用的CPU时间百分比。
%MEM: 进程使用的物理内存占系统总物理内存的百分比。
TIME+: 进程使用的总CPU时间。
COMMAND: 启动此进程的命令名称。
四、top 的常用交互命令
在 top 运行时,按下单个字母键可以执行各种操作(这些操作不会在屏幕上显示)。
最重要的排序命令
P(大写): 默认模式,按 CPU 使用率 %CPU 排序。M(大写): 按内存使用率 %MEM 排序。这是找出哪个进程占用内存最多的最快方法。T(大写): 按 TIME+(CPU 时间)排序。N(大写): 按 PID(进程ID)排序。
其他实用命令
k: 终止一个进程。输入后,会提示你输入要结束的进程的PID,然后提示输入信号(默认为15,SIGTERM;输入9是强制杀死SIGKILL)。r: renice一个进程(改变进程的优先级)。输入PID,然后输入新的Nice值(-20到19)。z: 切换是否显示彩色。1(数字1): 展开/折叠显示每个CPU核心的单独使用情况,而不是一个总体摘要。u: 然后输入用户名,可以只显示属于某个用户的进程。Shift + f: 进入字段管理界面,可以用方向键选择要显示或排序的列,按空格键选择是否显示(标有*的为显示),按s键选择排序的列,然后按q退出该界面。Shift + h: 切换是否显示线程(Threads)。按下后,Tasks行会变成Threads行。?或h: 显示帮助画面。
五、实战技巧:如何快速找出问题?
系统卡顿,怀疑CPU问题:
打开
top,看第一行的load average和第三行的%id(idle)。如果负载高且空闲率低,再看进程列表,按P排序,排在第一位的进程就是元凶。
系统卡顿,怀疑内存不足:
打开
top,看第四、五行。如果free内存极少且Swap的used很高,说明内存不足。按M键按内存排序,查看是哪个进程占用了最多的内存。
程序无响应,想强制关闭它:
打开
top,按M或P找到该进程,记下它的PID。按下
k键,输入那个PID,然后回车,再输入9再回车,即可强制结束它。
- 0
- 0
-
赞助
微信
支付宝
-
分享