功用:
<---实时动态地查看系统的整体运行情况,两个命令都是查看运行状况,但是htop更加易用--->
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
top工具界面信息介绍:
一、前五行是统计信息:
1、第一行是任务队列信息,同uptime命令的执行结果一样
其内容如下:
10:25:00 当前时间
up 21:31 系统运行时间,格式为时:分
4 users 当前登录用户数
load average: 0.00, 0.00, 0.00 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
2、第二行为进程信息统计数据
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
0.3% sy: 内核(系统)空间占用CPU百分比
0.0% ni: 用户进程空间内改变过优先级的进程占用CPU百分比
99.7% id: 空闲CPU百分比
0.0% wa: 等待输入输出的CPU时间百分比
0.0%hi: 硬件CPU中断占用百分比
0.0%si: 软中断占用百分比
1004768k total: 物理内存总量
463092k used: 使用的物理内存总量
541676k free: 空闲内存总量
64316k buffers: 用作内核缓存的内存量
Swap:
694268k total: 交换区总量
0 k used: 使用的交换区总量
694268k free: 空闲交换区总量
224884k cached:缓冲的交换区总量(内存中的数据被移动至交换区而后又被送至内存空间,但是使用过的交换区尚未被覆盖,其空间大小即为这些数据已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再次对交换区写入)
内存空间还剩多少空闲呢?
totalfree = free 541676 + buffer 64316 + cached 224884 (即:空闲内存 = 空闲内存总量 + 内核缓存的内存量 + 缓冲的交换区总量)
6、进程信息区统计信息区域的下方显示了各个进程的详细信息
序号 列名 含义
a PID 进程id b PPID 父进程id c RUSER Real user name d UID 进程所有者的用户id e USER 进程所有者的用户名 f GROUP 进程所有者的组名 g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ? h PR 优先级 i NI nice值。负值表示高优先级,正值表示低优先级 j P 最后使用的CPU,仅在多CPU环境下有意义 k %CPU 上次更新到现在的CPU时间占用百分比 l TIME 进程使用的CPU时间总计,单位秒 m TIME+ 进程使用的CPU时间总计,单位1/100秒 n %MEM 进程使用的物理内存百分比 o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。 q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA r CODE 可执行代码占用的物理内存大小,单位kb s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb t SHR 共享内存大小,单位kb u nFLT 页面错误次数 v nDRT 最后一次写入到现在,被修改过的页面数。 w S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) x COMMAND 命令名/命令行 y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 z Flags 任务标志,参考 sched.h
【备注:默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容】
top工具的使用方法:
top工具到两种使用方法:
1、命令行加选项。其语法格式:top [选项] 2、top工具的内置命令或交互命令的使用
1、命令行加选项。
其语法格式:top [-选项]
下面列出了常用的选项,想查看具体的使用方法请使用man文档查看
【选项】
p 通过指定监控进程ID来仅仅监控某个进程的状态。
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
f : 选择显示或隐藏对应的列的内容,进入后按a-z即可显示或隐藏 o: 可以改变列的显示顺序,进入后按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。 F或O: 进入后按a-z可以将进程按照相应的列进行排序,选定排序列按回车键退出之后还可以按R对当前选定列进行排序倒转。 k : 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽 i: 忽略闲置和僵死进程。这是一个开关式命令 q: 退出程序 S: 切换到累计模式。 s : 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加 r: 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。 l: 切换显示平均负载和启动时间信息。即显示影藏第一行 m: 切换显示内存信息。即显示影藏内存行 t : 切换显示进程和CPU状态信息。即显示影藏CPU行 c: 切换显示命令名称和完整命令行。 显示完整的命令。 这个功能很有用。 M : 根据驻留内存大小进行排序。 P: 根据CPU使用百分比大小进行排序。 T: 根据时间/累计时间进行排序。 W: 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法 h或者? 显示帮助画面,给出一些简短的命令总结说明
如果想查看top工具的更多内置交互命令方法: h或者?
Z,B Global: 'Z' change color mappings; 'B' disable/enable bold l,t,m Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info 1,I Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode f,o . Fields/Columns: 'f' add or remove; 'o' change display order F or O . Select sort field <,> . Move sort field: '<' next col left; '>' next col right R,H . Toggle: 'R' normal/reverse sort; 'H' show threads c,i,S . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time x,y . Toggle highlights: 'x' sort field; 'y' running tasks z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y') u . Show specific user only n or # . Set maximum tasks displayed k,r Manipulate tasks: 'k' kill; 'r' renice d or s Set update interval W Write configuration file q Quit ( commands shown with '.' require a visible task display window )
工具使用示例:
top //每隔5秒显式所有进程的资源占用情况 top -d 2 //每隔2秒显式所有进程的资源占用情况 top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名) top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况 top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
示例2:多U多核CPU监控
默认进入top时,各进程是按照CPU的占用量来排序的,在【示例2图】中进程ID为12292的top进程并列排在第一(cpu占用0.3%)。可通过键盘指令来改变排序字段,比如想监控哪个进程占用MEM最多,一般的使用方法如下:
1. 敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下:
我们发现进程id为12292的“top”进程被加亮了,top进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。
2、敲击键盘“x”(打开/关闭排序列的加亮效果),top的视图变化如下:
可以看到,top默认的排序列是“%CPU”。
3. 通过”shift + >”或”shift + <”可以向右或左改变排序列,下图是按一次”shift + >”的效果图:
视图现在已经按照%MEM来排序了。再次点击“x”就可以取消加亮效果了。
示例4:改变进程的显示字段
1. 敲击“f”键,top进入另一个视图,在这里可以编排基本视图中的显示字段:
使用小写字母选择字段,字段前面没有加 “ * ” 号的介绍没有显示的字段,我们加上 “ * ” 号就可以追加字段了。
示例5:杀死进程
直接输入k键,再次输入我们需要杀死的进程的PID号回车,
会提示:Kill PID 12160 with signal [15]:
如果我们直接回车,他会默认以15的信号杀死该进程,如果我们想对该进程摄入其他信号,则直接输入信号对应的数字就行了
top命令的补充
top命令是Linux上进行系统监控的常用命令,但有时候却达不到我们的要求(我们也可以使用htop命令),比如当前这台服务器,top监控有很大的局限性。这台服务器运行着websphere集群,有两个节点服务,如有两个java进程时,top命令的监控最小单位是进程,所以看不到我关心的java线程数和客户连接数,而这两个指标是java的web服务非常重要的指标,通常我用ps和netstate两个命令来补充top的不足。
监控java线程数:
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
面两个命令,可改动grep的参数,来达到更细致的监控要求。
在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):
ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:
pmap PID
参考文章:https://www.jb51.net/article/40807.htm