iftop类似于top的实时流量监控工具,可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
查看流量是从哪些端口发送出去的:
# iftop -P
-P 选项会在iftop 的输出结果中开启端口显示
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
要找到运行在该端口的进程,那么可以用netstat 或者lsof 来找到相应的进程。
使用netstat 命令来找到运行在10910这个端口上的进程:
# netstat -tunp | grep 10910
可以使用lsof 命令来找到运行在10909这个端口上的进程:
# lsof -i:10909
查看进程PID为51919的应用程序:
# ps -ef |grep 51919
Linux查看网络流量
在GUI下面,有一大把的工具可以显示网络流量,那么,命令行下面怎么办?
显然办法是有的,比如,ifconfig,会有这样的输 出:
RX bytes:1224128649 (1.1 GiB) TX bytes:34114947 (32.5 MiB)
过 一会再看,数值有所变化,两者的差值就是过去一段时间的流量。可是,这也太不人性化了……
正所谓自己动手,丰衣足食,我们自己来写一个脚 本,实时显示并刷新!
脚本如下,还是哪句话,本人功力有限,写脚本的原则是够用就好。
#!/bin/bash
if [ -n "$1" ]then
eth_name=$1
else
eth_name="eth0"
fi
i=0
send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
send_n=$send_o
recv_n=$recv_o
while [ $i -le 100000 ]do
send_l=$send_n
recv_l=$recv_n
sleep 1
send_n=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
recv_n=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
i=`expr $i + 1`
send_r=`expr $send_n - $send_l`
recv_r=`expr $recv_n - $recv_l`
total_r=`expr $send_r + $recv_r`
send_ra=`expr /( $send_n - $send_o /) / $i`
recv_ra=`expr /( $recv_n - $recv_o /) / $i`
total_ra=`expr $send_ra + $recv_ra`
sendn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $3}' | awk -F /) '{print $1}'`
recvn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $2}' | awk -F /) '{print $1}'`
clear
echo "Last second : Send rate: $send_r Bytes/sec Recv rate: $recv_r Bytes/sec Total rate: $total_r Bytes/sec"
echo "Average value: Send rate: $send_ra Bytes/sec Recv rate: $recv_ra Bytes/sec Total rate: $total_ra Bytes/sec"
echo "Total traffic after startup: Send traffic: $sendn Recv traffic: $recvn"
done
该脚本(假设名叫traffic)默认显示eth0的流量,如果你有多个网卡,请将网卡作为参数传进去,比如:
./traffic eth1
运行结果如下:
iftop很强大的,完全
可以做到
-i设定监测的网卡,如:#
iftop
-i
eth1
-b
以bytes为单位显示流量(默认是bits),如:#
iftop
-b
-n使host信息默认直接都显示ip,如:#
iftop
-n
-n使端口信息默认直接都显示端口号,如:
#
iftop
-n
-f显示特定网段的进出流量,如#
iftop
-f
10.10.1.0/24或#
iftop
-f
10.10.1.0/255.255.255.0
-h(display
this
message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的ip信息
-b使流量图形条默认就显示
-f这个暂时还不太会用,过滤计算包用的
-p使host信息及端口信息默认就都显示
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:#
iftop
-m
100m
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)