Linux常用命令详解-性能检测方面

2016-09-25 08:08:34 8341

top命令

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

格式:

top [option]1

选项:

-b:以批处理模式操作

-c:显示完整的治命令

-d:屏幕刷新间隔时间

-I:忽略失效过程

-s:保密模式

-S:累积模式

-i<时间>:设置间隔时间

-u<用户名>:指定用户名

-p<进程号>:指定进程

-n<次数>:循环显示的次数。

top交互命令:

h 显示帮助画面,给出一些简短的命令总结说明

k 终止一个进程。

i 忽略闲置和僵死进程。这是一个开关式命令。

q 退出程序

r 重新安排一个进程的优先级别

S 切换到累计模式

s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s

f或者F 从当前显示中添加或者删除项目

o或者O 改变显示项目的顺序

l 切换显示平均负载和启动时间信息

m 切换显示内存信息

t 切换显示进程和CPU状态信息

c 切换显示命令名称和完整命令行

M 根据驻留内存大小进行排序

P 根据CPU使用百分比大小进行排序

T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中

free

free命令可以显示当前系统已经使用和未使用的内存数据,包括物理内存、交换区内存和内核缓冲区内存。

格式:

free [option]1

选项:

-b:以Byte为单位显示内存使用情况

-k:以KB为单位显示内存使用情况

-m:以MB为单位显示内存使用情况

-o:不显示缓冲区调节列

-s<间隔秒数>:持续观察内存使用状况

-t:显示内存总和列

-v:显示版本信息。

常用命令:

$ free -g
$ free -m12

vmstat命令

vmstat(Virtual Memory Statistics,虚拟内存统计)命令,可对操作系统的虚拟内存、进程、CPU活动进行监测。

格式:

vmstat [option] [para]1

选项:

-a:显示活动内页

-f:显示启动后创建的进程总数

-m:显示slab信息

-n:头信息仅显示一次

-s:以表格方式显示事件计数器和内存状态

-d:报告磁盘状态

-p:显示指定的硬盘分区状态

-S:输出信息的单位。

参数:

事件间隔:状态信息刷新的时间间隔

次数:显示报告的次数

应用实例:

[shmilychan@localhost ~]$ vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
1  0      0 468608  14560 705972    0    0     1     0   29   45  0  0 100  0  0
1  0      0 468540  14560 706004    0    0     0     0  269  312  2  1 97  0  0
0  0      0 468588  14560 706004    0    0     0     0  395  406  3  2 95  0123456

字段说明:

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)

b: 等待IO的进程数量。

Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。

free: 空闲物理内存大小。

buff: 用作缓冲的内存大小。

cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

si: 每秒从交换区写到内存的大小,由磁盘调入内存。

so: 每秒写入交换区的内存大小,由内存调入磁盘。

注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数

bo: 每秒写入的块数

注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。

cs: 每秒上下文切换数。

注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time) 
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy: 内核系统进程执行时间百分比(system time) 
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa: IO等待时间百分比 
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比

iostat命令

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

格式:

iostat [option] [para]1

?项:

-c:仅显示CPU使用情况

-d:仅显示设备利用率

-k:显示状态以千字节每秒为单位,而不使用块每秒

-m:显示状态以兆字节每秒为单位

-p:仅显示块设备和所有被使用的其他分区的状态

-t:显示每个报告产生时的时间

-V:显示版号并退出

-x:显示扩展状态。

参数:

间隔时间:每次报告的时间间隔(秒)

次数:显示报告次数

history命令

history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史?令缓冲区中的目录写入命令文件。

格式:

history [option] [para]1

选项:

-c:清除当前历史命令

-a:将历史命令缓冲区中命令写入历史命令文件中

-r:将历史命令文件中的命令写入当前历史命令缓冲区

-w:将当前历史命令缓冲区中的命令写入历史文件中

参数:

n:打印最近的n条历史命令。

env命令

env命令用来显示系统中已存在的环境变量,并进行相应的操作。

格式:

env [option] [para]1

选项:

-i:开始一个新的空环境

-u<变量名>:从当前环境中删除指定的变量

参数:

变量定义:定义在新的环境中变量,定义多个变量定义用空格隔开。格式为“变量名=值”

指定:指定要执行的指令和参数

lsof命令

lsof(List Open Files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

格式:

lsof [option] [para]1

选项:

-a:列出打开文件存在的进程

-c<进程名>:列出指定进程所打开的文件

-g:列出GID号进程详情

d<文件号>:列出占用该文件号的进程

+d<目录>:列出目录下被打开的文件

+D<目录>:递归列出目录下被打开的文件

-n<目录>:列出使用NFS的文件

-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )

-p<进程号>:列出指定进程号所打开的文件

-u:列出UID号进程详情

-h:显示帮助信息

-v:显示版本信息


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: