我爱电脑技术论坛's Archiver

不和人说话 发表于 2008-6-22 09:59

Linux流量监控的三个方法

Linux流量监控的三个方法 .rD}.C;Gc/L)FV^
因为做linux常常会要做linux下的流量查看,下面的三个方法能很好的解决当前流量查看.注:我认为nload很破,不准.安装方法,请查我的另一个文章,linux的rpm高级管理. w SX3y(]-Mk+S

6u;H4DI#D:Fg iftop工具 !{4E:v[[(ia q

q ^q-Cw/MV9{L 用途: 用来即时监看网路状态和各ip所使用的频宽
!K9C7zc:u)AfY{$R]x n I2[ ?^-V
执行(必须以root身份)
4LI0{.lp(mJ 监控eth1的网卡的流量
$T.j4v"A7b(V'J # iftop -i eth1 KzD%EQyy*E

I3Yi*p*c u x M9@nJEG
以位元组(bytes)为单位显示流量(预设是位元bits): v(P FL XB1JM
$ iftop -B %r |?0G&C1Q?)^A

)^;pxex2z 直接显示IP, 不进行DNS反解: /P0Rf+d_J}
$ iftop -n } m$LurE$C
"RUtbG?.M$qvHQ
直接显示连接埠编号, 不显示服务名称:
t0p.k p @*T $ iftop -N n9?'l%o^ D
Ag$el$z3w#pv
显示某个网段进出封包流量
7wg&SU)`@,T $ iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0
.L#c^W1@@d.y
p9f g\Z/oa4F*P 其他参数可下 iftop -h 看说明. @/G[{;m4L6w6u

jY/d1A,M"W 进入iftop画面时, 可按 p 切换是否显示连接埠, n 切换显示IP或主机的domain name, N切换显示连接埠代号或名称, p暂停显示, b切换是否显示长条, B切换计算几秒内的平均流量, 其他按键可以按h观看说明. r%h?L{f z2y
設定檔的位置在~/.iftoprc , 關於設定檔的寫法可以參考 iftop 的 info page.
A8lt{+D,[8[
Y#m[0p]Bpx nload
l:z_(h T|'U6_1_ 用途: 用来即时监看网路状态和各ip所使用的频宽(很废话了)
Z0t:h]-E;N8D:oG nload默认的是eth0网卡,如果你想监测eth1网卡的流量 V/Z/g!~E}"a+j-W
#nload eth1 ](y/t7R6r
5ZI5|t4f~a
3F8K0m2s!oh? RD
nload默认分为上下两块:上半部分是:Incoming也就是进入网卡的流量,下半部分是:Outgoing,也就是从这块网卡出去的流量,每 部分都有当前流量(Curr),平均流量(Avg),最小流量(Min),最大流量(Max),总和流量(Ttl)这几个部分,看起来还是蛮直观的。
2sL@k/GP1XH 另外,你也可以自己定义流量数值显示的单位 j6S'W0cF4J'p jt
#nload --help ud$p/o+u!y,p\4["a0x
就可以看到具体的相关参数了。 c:qX I&C9e|

{1AvpZUEO-I 查看网络平均流量
cdG-Sx7tQ
#y9bPE/FB tT s6U4F7h 下面的脚本可以很好的监控你的网络的平均流量,你可以提定时间
z/eH:gI#M\%JO&S%g #!/bin/bash
{4Q puMqnqW%| echo -n "which nic?"
|+FPd9gb ^O,RV)i read eth
Fe.z[J2Q a'g g echo "the nic is "$eth
y@;K.CT D echo -n "how much seconds:"
1d.PN@/B MEwR read sec
O"j1u A(o'm echo "duration is "$sec" seconds, wait please..." (T eg7{6km#\a*E
infirst=$(awk '/'$eth'/{print $1 }' /proc/net/dev |sed 's/'$eth'://') w ral0p0X
outfirst=$(awk '/'$eth'/{print $10 }' /proc/net/dev)
-D g*c,Mwl6A { Qj sumfirst=$(($infirst+$outfirst))
]5\Y)d4T9Y sleep $sec"s" 1\C@4F_5B U/V
inend=$(awk '/'$eth'/{print $1 }' /proc/net/dev |sed 's/'$eth'://') 4H2\Ew'uJy0A
outend=$(awk '/'$eth'/{print $10 }' /proc/net/dev)
e2{K6`%j sumend=$(($inend+$outend)) _*H6Be'D'~:Ib?
sum=$(($sumend-$sumfirst))
Sa,f#`4{R"IRw echo $sec" seconds total :"$sum"bytes" s;[0} D^ q+u}
aver=$(($sum/$sec))
y&s\%?Fc+P;j echo "avrage :"$aver"bytes/sec"

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.