22 October 2013

linux 工具

大家常用的Linux下的命令行工具有哪些呢?最近有同事培训了简单的linux命令行工具 的使用,对基本的几个工具进行了介绍。科室千万别小看这些基本工具。

分析网卡流量

在linux下使用sar命令,可以显示网络信息。

sar提供六种不同的语法选项来显示网络信息。-n选项使用6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL 。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。

[root@cnetos5 ~]# sar

[root@cnetos5 ~]# sar -u

Linux 2.6.18-53.el5 (cnetos5) 10/20/2013

12:00:01 AM CPU %user %nice %system %iowait %steal %idle

12:10:01 AM all 0.02 0.00 0.14 0.01 0.00 99.84

12:20:01 AM all 0.02 0.00 0.12 0.01 0.00 99.86

12:30:01 AM all 0.01 0.00 0.12 0.01 0.00 99.86

Average: all 0.03 0.00 0.13 0.01 0.00 99.84

CPU    all 表示统计信息为所有 CPU 的平均值。

%user	显示在用户级别(application)运行使用 CPU 总时间的百分比。

%nice	显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。

%system	在核心级别(kernel)运行所使用 CPU 总时间的百分比。

%iowait	显示用于等待I/O操作占用 CPU 总时间的百分比。

%steal	管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

%idle	显示 CPU 空闲时间占用 CPU 总时间的百分比。

SAR -N

[root@sybase ~]# sar -n DEV
Linux 2.6.32-220.el6.x86_64 (sybase)    10/22/13        _x86_64_        (2 CPU)


15:00:01        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15:10:01           lo      0.39      0.39      0.10      0.10      0.00      0.00      0.00
15:10:01         eth0     74.25     29.15     88.49      1.89      0.00      0.00      0.00
15:10:01         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15:20:01           lo      0.39      0.39      0.10      0.10      0.00      0.00      0.00
15:20:01         eth0     17.02      7.04     20.88      0.46      0.00      0.00      0.00
15:20:01         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:           lo      0.39      0.39      0.10      0.10      0.00      0.00      0.00
Average:         eth0    156.77     72.57    219.63      5.63      0.00      0.00      0.00
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

输出项说明:
IFACE    网络设备名
rxpck/s	每秒接收的包总数
txpck/s	每秒传输的包总数
rxbyt/s	每秒接收的字节(byte)总数
txbyt/s	每秒传输的字节(byte)总数
rxcmp/s	每秒接收压缩包的总数
txcmp/s	每秒传输压缩包的总数
rxmcst/s	每秒接收的多播(multicast)包的总数

分析CPU占用

Linux中常用的监控CPU整体性能的工具有:
mpstat: 
    mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。
vmstat:
	只能查看所有CPU的平均信息;查看cpu队列信息;
iostat: 
	只能查看所有CPU的平均信息。
sar: 
	与mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。
top:
	显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。
    

[root@sybase ~]# mpstat 1
Linux 2.6.32-220.el6.x86_64 (sybase)    10/22/13        _x86_64_        (2 CPU)

15:32:11     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
15:32:12     all    0.99    0.00    1.49    0.00    0.00    0.00    0.00    0.00   97.52
15:32:13     all    1.00    0.00    1.50    0.00    0.00    0.00    0.00    0.00   97.50
15:32:14     all    1.00    0.00    1.50    2.50    0.00    0.00    0.00    0.00   95.00
15:32:15     all    1.00    0.00    1.00    0.50    0.00    0.00    0.00    0.00   97.51
15:32:16     all    1.00    0.00    1.99    0.00    0.00    0.00    0.00    0.00   97.01
15:32:17     all    1.49    0.00    1.49    0.00    0.00    0.00    0.00    0.00   97.03
15:32:18     all    0.50    0.00    1.49    0.00    0.00    0.00    0.00    0.00   98.01

分析内存占用

[root@sybase ~]# vmstat 1 
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1288620 171140 280440    0    0     1    21   18   13  1  2 97  0  0
 0  0      0 1288620 171140 280448    0    0     0    40 3499 13022  1  2 95  2  0
 0  0      0 1288620 171140 280448    0    0     0     4 3298 12879  1  2 97  0  0
 0  0      0 1288620 171140 280448    0    0     0     0 3190 12786  0  2 98  0  0

分析IO

[root@sybase ~]# iostat -x 1
Linux 2.6.32-220.el6.x86_64 (sybase)    10/22/13        _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.12    0.00    1.68    0.42    0.00   96.78

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.05     8.75    0.08    1.67     2.56    82.49    48.61     0.03   16.82   4.89   0.86
dm-0              0.00     0.00    0.11    8.52     2.23    68.58     8.21     2.14  247.78   0.97   0.84
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    6.38   3.19   0.00
dm-2              0.00     0.00    0.02    1.74     0.31    13.91     8.09     0.23  129.84   0.09   0.02

每项数据的含义如下,
rrqm/s:	每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s:	每秒进行 merge 的写操作数目。即 wmerge/s
r/s:	每秒完成的读 I/O 设备次数。即 rio/s
w/s:       每秒完成的写 I/O 设备次数。即 wio/s
rsec/s:     每秒读扇区数。即 rsect/s
wsec/s:     每秒写扇区数。即 wsect/s
rkB/s:     每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s:     每秒写K字节数。是 wsect/s 的一半。
avgrq-sz:   平均每次设备I/O操作的数据大小 (扇区)。即 (rsect+wsect)/(rio+wio)
avgqu-sz:   平均I/O队列长度。即 aveq/1000 (因为aveq的单位为毫秒)。
await:     平均每次设备I/O操作的等待时间 (毫秒)。即 (ruse+wuse)/(rio+wio)
svctm:     平均每次设备I/O操作的服务时间 (毫秒)。即 use/(rio+wio)
%util:     一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间