代码之家  ›  专栏  ›  技术社区  ›  helloandre

Linux中的实时Rx和Tx速率

  •  2
  • helloandre  · 技术社区  · 17 年前

    我正在寻找一种通过编程(无论是调用库还是独立程序)来监控Linux中的实时IP流量的方法。我不想要总数,我想要当前使用的带宽。我正在寻找一个与OSX的ISTAT菜单的网络流量监视器类似(但不是图形化)的工具。

    我相当确定这样的东西是存在的,但我不确定该去哪里,我宁愿不必重新发明轮子。

    它是否和监视套接字一样简单?或者我需要一个为我处理大量开销的实用程序?

    3 回复  |  直到 11 年前
        1
  •  9
  •   mrk    17 年前

    我们在/proc/net/dev中有字节和包计数器,因此:

    import time
    
    last={}
    
    def diff(col): return counters[col] - last[iface][col]
    
    while True:
      print "\n%10s: %10s %10s %10s %10s"%("interface","bytes recv","bytes sent", "pkts recv", "pkts sent")
      for line in open('/proc/net/dev').readlines()[2:]:
        iface, counters = line.split(':')
        counters = map(int,counters.split())
        if iface in last:
          print "%10s: %10d %10d %10d %10d"%(iface,diff(0), diff(8), diff(1), diff(9))
    
        last[iface] = counters
    
      time.sleep(1)
    
        2
  •  1
  •   mox1    17 年前

    我使用一个叫做 dstat 它将许多类似“stat”的函数组合成1个快速输出。非常可定制。它将为您提供当前的网络吞吐量以及更多。

    在Linux中,程序 netstat 将为您提供原始网络统计信息。您可以自己分析这些统计信息以产生有意义的输出(这就是DSTAT所做的)。

        3
  •  0
  •   Dag Wieers    11 年前

    您可以使用以下方法获得网络吞吐量和数据包计数 dstat 命令:

    dstat -n --net-packets -f 10
    

    或者,如果要监视特定接口,可以执行以下操作:

    dstat -n --net-packets -N eth0,wlan0 10
    

    如果你喜欢更传统的 bits per second 输出:

    dstat -n --net-packets -N eth0,wlan0 --bits 10
    

    这将为您提供10秒的平均值。如果您希望将其写出来进行后期处理,可以使用以下方法导出到csv文件:

    dstat-n—网络包—n eth0,wlan0—位10
    

    DStat提供了许多插件,可以将这些指标与系统中的其他指标相关联,如果您需要定制数据或监视特定于您的环境的东西,DStat还可以灵活地添加您自己的(python)插件。