linux命令---top

来源:互联网 发布:mac matte chili 编辑:程序博客网 时间:2024/06/05 04:01

这是我第一次写linux命令篇,提醒一点请学会查看系统自带的手册—有问题找”男人(man)”,一句玩笑莫当真~~
所有命令截图是基于centos7

概述

top命令是Linux下常用的性能分析工具,能够显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用、内存使用、执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令设定。
top命令

统计信息区

前五行是系统整体的统计信息。

第1行:任务队列信息

同 uptime 命令的执行结果。

数据 含义 19:15:19 当前时间 up 531 days 7:42 系统运行时间,格式为天,时:分 3 user 当前登录用户数 load average: 0.00, 0.00, 0.00 系统1分、5分、15分到现在的平均负载,即任务队列的平均长度。

第2行:进程信息

当有多个CPU时,这些内容可能会超过两行(通过按数字1展开所有cpu):

数据 含义 Tasks: 187 total 进程总数 1 running 正在运行的进程数 186 sleeping 睡眠的进程数 0 stopped 停止的进程数 0 zombie 僵尸进程数

第3行:CPU信息

数据 含义 Cpu(s): 1.0% us 用户空间占用CPU百分比 0.1% sy 内核空间占用CPU百分比 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比 98.8% id 空闲CPU百分比 0.0% wa 等待输入输出的CPU时间百分比 0.0% hi 硬中断(Hardware IRQ)占用CPU的百分比 0.1% si 软中断(Software Interrupts)占用CPU的百分比 0.0% st 虚拟 CPU 等待实际 CPU 的时间的百分比

第4行:内存信息

数据 含义 Mem: 32915684k total 物理内存总量 16540936k used 使用的物理内存总量 16374748k free 空闲内存总量 1194868k buffers 用作内核缓存的内存量

第5行:交换区信息

数据 含义 Swap: 4192956k total 交换区总量 1212k used 使用的交换区总量 4191744k free 空闲交换区总量 8685672k cached 缓冲的交换区总量。

swap使用大小:内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
使用内存总量(used):现在系统内核控制的内存数
空闲内存总量(free):是内核还未纳入其管控范围的数量。
* 注意 * 纳入内核管理的内存不一定都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

多说一句:因为linux有一种思想---不用白不用,因此它尽可能的cache和buffers一些数据看以方便下次使用,但实际上这些内存是可以直接拿来使用的,准确的可使用内存 【可使用内存=free+buffers+cached】linux为提高效率,会提前申请内存,即使这些内存没有被具体使用,linux也会提前申请这些内存,然后用这些内存做缓存用,即将刚打开的文件系统缓存入cache,这样对用的服务器free值也会越来越少,buffers和cached会越来越大,其实linux服务器内存不足时,会自动清理cached区域释放内存,然后继续增加cached,free继续减少。

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了(当然也可以用vmstat统计si和so这个命令后续会专门介绍)。

进程信息区

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义(通过快捷键f调出,已排序)。

序号 列名 含义 a PID 进程id b PPID 父进程id c RUSER Real 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 任务标志,参考

默认显示: PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。
修改显示:通过 f 键可以选择显示的内容。
1)按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
2)按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
3)F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。
4)R 键可以将当前的排序倒转。


VIRT:virtual memory usage
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。


命令使用

命令格式

top -hvV | -bcHisSMm -d delay -n iterations [-u user | -U user] -p pid [, pid …]

选项说明

选项 含义 d 指定每两次屏幕信息刷新之间的时间间隔。或者使用s交互命令来改变 p 通过指定监控进程ID来仅仅监控某个进程的状态 q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行 S 指定累计模式 s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 i 使top不显示任何闲置或者僵死进程 c 显示整个命令行而不只是显示命令名

交互命令

使用交互命令最好就不要用s参数,若使用s参数会屏蔽掉一部分交互命令。

命令 作用 Ctrl+L 擦除并且重写屏幕 h/? 显示帮助画面,给出一些简短的命令总结说明 k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽 i 忽略闲置和僵死进程。这是一个开关式命令 q 退出程序 r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10 S 切换到累计模式 s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 f/F 从当前显示中添加或者删除项目 o/O 改变显示项目的顺序 l 切换显示平均负载和启动时间信息 m 切换显示内存信息 t 切换显示进程和CPU状态信息 c 切换显示命令名称和完整命令行 M 根据驻留内存大小进行排序 P 根据CPU使用百分比大小进行排序 T 根据时间/累计时间进行排序 W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

可排查什么问题

1、查看服务器启动时间,观察是否被动重启过:up
2、查看服务器负载:Load average
3、查看服务器进程情况:tasks,是否存在僵尸等
4、查看CPU使用是否正常:
1)总体cpu使用是否正常
2)user和sy使用占比是否正常
3)wa占比是否正常
4)结合数字1查看单核CPU是否正常,经常会有单线程跑满某一核CPU,或者多线程的某一个线程异常导致某一核CPU使用过高,这些从总的CPU情况无法判断(替换命令mpstat -P ALL 1更详细)
5、查看内存是否足够,主要查看swap(参看统计信息最后说明)
6、可查看任务优先级
7、查看进程所消耗资源进一步排查问题:比如排查最占资源的线程信息

    1、top查到pid    2、top -Hp pid 找到对应线程tid    3、将tid转换成16进制记为0xtid    4、jstack pid|grep 0xtid -A 30    5、根据打出的栈信息分析问题

8、st%:steal 值比较高的话,你需要向主机供应商申请扩容虚拟机。服务器上的另一个虚拟机可能拥有更大更多的 CPU 时间片,你可能需要申请升级以与之竞争。另外,高 steal 值可能意味着主机供应商在服务器上过量地出售虚拟机。如果升级了虚拟机, steal 值还是不降的话,你应该寻找另一家服务供应商。
低 steal 值意味着你的应用程序在目前的虚拟机上运作良好。因为你的虚拟机不会经常地为了 CPU 时间与其它虚拟机激烈竞争,你的虚拟机会更快地响应。这一点也暗示了,你的主机供应商没有过量地出售虚拟服务,绝对是一件好事情

等等……

原文连接
欢迎补充留言

原创粉丝点击