top命令详解
发布网友
发布时间:2024-09-03 10:08
我来回答
共1个回答
热心网友
时间:2024-09-04 16:33
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,其作用类似于windows系统中的任务管理器。
top命令可以动态显示系统的负载情况,本文将详细介绍top命令的方方面面。
top命令支持一些参数,下面是一些常用的参数:- -d:设置刷新频率。- -n:设置刷新的次数。- -p:显示指定进程的信息。- -u:显示指定用户的进程信息。- -o:指定排序字段。- -h:显示帮助信息。
显示每2秒刷新一次且仅刷新10次的进程信息:
显示指定用户root的进程信息:
显示指定进程ID为123的信息:
以内存使用率排序:
通常top命令的输出如下所示,它包含了很多方面的数据,例如CPU,内存,系统的任务等等数据。
下面便一行一行的看看top命令的数据。
第一行其实代表了系统的启动时间和系统的平均负载。
top - 10:32:42 up 38 min代表当前系统的时间是10:32:42,并且该机器已经启动了38 min。2 users代表当前有两个用户登录。load average: 0.00, 0.00, 0.00代表的是系统最近5、10和15分钟内的平均负载。
这里需要注意的是平均负载并不是代表CPU的使用率。简单来说,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。
所谓可运行状态和不可中断状态是指:- 可运行状态(R):正在CPU上运行或者正在等待CPU的进程状态,如上;- 不可中断状态(D):不可中断是指一些正在处于内核关键流程的进程,如果盲目打断,会造成不可预知的后果,比如正在写磁盘的进程,盲目被打断,可能会造成读写不一致的问题。
因此这里再次强调load average和CPU使用率并没有直接关系,其值可以大于100。
其实第一行的显示数据和命令uptime的作用是一样的。
第二行显示的是关于进程状态的总结。
进程可以处于不同的状态,这里显示了处于各种状态的进程数量,例如正在运行的任务、睡眠的任务、停止的任务、僵尸进程的数量等。
在下面的显示中,系统总共有237个进程,其中1个进程处于running状态,236个进程处于sleeping状态,0个进程处于stop状态,0个进程处于僵尸进程状态。
第三行是比较关键的一行,线上定位问题的时候,会经常关注这个点。
这里的每一个参数的含义如下所示:- us, user:用户空间的CPU百分比- sy,system:内核空间占用的CPU百分比- ni,niced:调整过优先级的用户进程占用CPU百分比- id,idle:空闲CPU的百分比- wa,IO wait:用于等待IO完成的CPU时间- hi:处理硬件中断的CPU时间- si:处理软件中断的CPU时间- st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
第四部分是关于内存部分的数据。这里包含了两行,
第一行是物理内存的使用情况,第二行是关于交换分区的使用情况。
第一行的含义如下:- 3635.0 total — 物理内存总量(3265MB)- 3229.8 free — 空闲的内存总量(3229.8MB)- 441.0 used — 使用中的内存总量(441.0MB)- 170.1 buff/cache — block buffer + page cache 所占用的内存大小 (169M)
这里补充一句buff/cache的内容,在Linux 2.4以前,page cache和buffer cache是两个独立的缓存,Linux 2.4开始page cache和buffer cache进行了统一。
第二行的含义如下:- 2072.0 total - 交换分区的总量- 2072.0 free - 空闲的交换分区的总量- 0.0 used - 已使用的交换分区大小- 3194.0 avail Mem:这个值是系统的估算值,表示可用于启动新程序的物理内存大小(不包括swap空间)
第五部分是关于每个进程的数据:
在横向列出的系统属性和状态下面,是以列显示的进程。不同的列代表下面要解释的不同属性。
在top的基本视图中,按数字1,可以监控每个逻辑CPU的状况,例如下面的例子,我的虚拟机包含了4个cpu,这里显示了4个CPU的运行状况。
在top的基本视图中,按字母e,可以切换每个任务占用内存的大小的单位,从KB、MB、GB、TB、PB到EB循环切换。下面切换为了以MB为单位:
快捷键n用于限制要展示的任务的数量,0表示无限制。默认是全部展示(超过一页需要翻页)。这里输入n之后,再输入5,选择只显示5条记录
快捷键u表示要过滤的用户,可以加!前缀表示反向条件。可以输入UID或者username,直接回车表示取消这个过滤条件。
运行top命令后,键入大写字母P,可以对任务的CPU使用情况进行排序,有两种途径:- 打开大写键盘的情况下,直接按p- 为打开大写键盘的情况下,shift+p。
运行top命令后,键入大写字母M,可以对任务的CPU使用情况进行排序,有两种途径:- 打开大写键盘的情况下,直接按m- 为打开大写键盘的情况下,shift+m。