要查看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