查看top版本
本文中执行的所有top命令都是基于该版本。
进入top命令
在shell中直接执行top即可进入top命令,结果如上图所示。
上图中,高亮行是 Fields/Columns Header,高亮行上是 Summary Area,高亮行下是 Task Area。
Summary Area 中的 %Cpu(s) 行用于表示cpu的使用情况,各字段的意义为:
us, user : time running un-niced user processes sy, system : time running kernel processes ni, nice : time running niced user processes id, idle : time spent in the kernel idle handler wa, IO-wait : time waiting for I/O completion hi : time spent servicing hardware interrupts si : time spent servicing software interrupts st : time stolen from this vm by the hypervisor
KiB Mem 行用于表示物理内存的使用情况。KiB Swap 行用于表示 swap file 的使用情况(avail Mem 表示系统剩余的物理内存)。这两行前面的 KiB 表示当前内存单位为KB。
Fields/Columns Header 行中,RES表示进程使用的物理内存,没有单位则默认为KB,%MEM表示进程使用的物理内存占比,即 RES/总内存*100%,%CPU表示进程使用的cpu占比,假设机器为4核,那这里的值最高可为400%,Fields/Columns Header 行中的S表示进程状态,比如R表示运行中,S表示sleep中。
改变内存显示单位
进入top命令后,不断按E键可以修改 Summary Area 中的内存单位。不断按e可以修改 Task Area 中的内存单位。执行效果见上图,其中 Summary Area 中的内存单位已经变成GiB,Task Area 中的内存单位已经变成 MB。
高亮显示当前排序列
进入top之后,按x键,就会高亮显示当前排序列,如上图的%CPU列。
修改排序列
进入top后,先按f键,进入上面的界面,再通过上下箭头选择排序列,之后按s进行确定,最后按q退出上面界面。比如上图中我们选择了PID列作为排序列,按q退出后,最终的效果如下
反向排序
进入top命令后,按R,就会对当前排序列进行反向排序。
查看进程运行的完整命令
进入top命令后,按c键就可以显示进程运行的完整命令,包括参数。
只显示指定进程
在执行top命令时,用参数-p指定要显示的进程id,比如:top -p <pid>,<pid>…
显示线程
进入top后,按H就会显示线程,比如上图就是一个Java进程对应的所有线程,其中PID列此时表示的是线程id。
条件过滤
进入top命令后,按o键,系统就会提示我们输入filter,filter的基本格式为 FIELD+operator+value。比如上图中,我们输入的filter的意义为:COMMAND列中值包含java的那些行。运行结果如下图
取消filter效果也很简单,只要按=键就可以了。
更多top命令的信息,请参考 top(1) man page.