你的位置:首页 > 软件硬件 >正文
09
十月
分类:软件硬件 | 评论数:3 | 点击数:5291 | 发表日期时间:2014-10-09 11:34:57

分享到:


本文导读:

要查看linux服务器流量有点麻烦没那么直观与现成的方法,所以只能安装第三方或者使用shell命令分析网站日志。
正文

要查看linux服务器流量有点麻烦没那么直观与现成的方法,经使用总结方法有二种,安装第三方和自制shell脚本工具进行查看网卡流量。

方法一:

通用于linux系统,但安装方法有区别,centos系统下的iftop安装方法,
执行

yum install iftop

安装,如果不能正常安装成功,提示失败。则编译安装,编译安装前,请确认是否安装GCC,如果是新系统默认是没有安装有的,运行

yum install gcc

之后编译安装iftop:

yum -y install flex byacc libpcap ncurses ncurses-devel libpcap-devel
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install

debian/ubuntu系统的安装方法,执行

apt-get install iftop

安装好后运行方法:

iftop -i eth0

TX,发送流量;RX,接收流量;TOTAL,总流量;Cumm,运行iftop期间流量;peak,流量峰值;rates,分别代表2秒、10秒、40秒的平均流量。 界面可使用快捷键:h帮助,n切换显示IP主机名,s是否显示本机信息,d是否显示远端信息,N切换端口服务名称,b切换是否时数流量图形条。

方法二:


1) 可以使用ifconfig命令查看网卡eth0的使用情况

ifconfig  eth0

eth0      Link encap:Ethernet  HWaddr 00:50:56:B2:1D:65  

          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: 2001:da8:20d:31:2::/64 Scope:Global

          inet6 addr: 2001:da8:20d:31:250:56ff:feb2:1d65/64 Scope:Global

          inet6 addr: fe80::250:56ff:feb2:1d65/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:949925 errors:0 dropped:0 overruns:0 frame:0

          TX packets:476662 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:1350085212 (1.2 GiB)  TX bytes:33019912 (31.4 MiB)

 

2) 最后一行可以查看网卡接收和发送字节

ifconfig  eth0 | grep bytes

          RX bytes:1350100537 (1.2 GiB)  TX bytes:33023756 (31.4 MiB)

3) 字节数是随着时间的增长不停的增加的,查看当前接收字节数,可使用如下命令

ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}'

1350116823

ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}'

1350120591

 

4) 由于字节数的不断增长,所以每间隔1秒取得值相减即为该秒的网速值

ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}' ; sleep 1s ; ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}'

1350168724

1350168876

 

5) 两个命令返回值相减,需要使用脚本来做操作

vi RX.sh

输入以下内容

RX0=$(ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}')

sleep 1s

RX1=$(ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}')

echo $((RX1-RX0))

sh RX.sh 

240

得出的240即为当前网卡的实时接收网速为240B/s

 

6) 如果需要显示单位为KB/s或者MB/s,需要在原来的值后面除以1024但是默认使用echo除法只能显示整数,不能显示小数,这里需要使用awk命令

vi RX.sh

修改为以下内容

RX0=$(ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}')

sleep 1s

RX1=$(ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}')

awk "BEGIN{print ($RX1-$RX0)/1024}"

sh RX.sh 

0.117188

 

7) 同理,可以使用脚本取到实时接收和实时发送的网速

vi Rb.sh

输入以下内容

RX0=$(ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}')

TX0=$(ifconfig eth0 |grep bytes | awk '{print $6}' | awk -F ":" '{print $2}')

sleep 1s

RX1=$(ifconfig eth0 |grep bytes | awk '{print $2}' | awk -F ":" '{print $2}')

TX1=$(ifconfig eth0 |grep bytes | awk '{print $6}' | awk -F ":" '{print $2}')

awk "BEGIN{print ($RX1-$RX0)/1024}" ; awk "BEGIN{print ($TX1-$TX0)/1024}"

sh Rb.sh 

97.0039

11547.2

这是我从客户端下载该设备上文件时,得出的网速,接收97.0039KB/s,发送11547.2 KB/s


本文标签:
linux
服务器
猜你喜欢:
评论:

3楼   阿兴博客  2014-10-10 10:34:51  回复该评论

文章很好,实用

2楼   创意二维码  2014-10-10 10:11:41  回复该评论

连windows的操作系统都不会。。

1楼   何樊足迹  2014-10-09 12:29:48  回复该评论

我正在使用的也是linux空间

昵称(必填)

邮箱

网址

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。