如何获取 TX 和 RX 的总量

如何获取 TX 和 RX 的总量

我想获取 TX 和 RX 的总量,以了解服务器当前接收或传输的数据量。

使用此命令ip -s link我得到了这个结果

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    21914963679042 3114955121 0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    21914963679042 3114955121 0       0       0       0       
2: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether d4:5d:64:40:53:ca brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    251928745868 1094612700 0       0       0       5914052 
    TX: bytes  packets  errors  dropped carrier collsns 
    1091337709507 1328468566 0       0       0       0       
3: enp3s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether d4:5d:64:40:53:cb brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0 

据我所知,lo是本地的。所以必须忽略。但我需要获取剩余接口的 TX 和 RX 之和。该怎么做?

谢谢。

答案1

我不知道您是否需要ifupdown安装该软件包,但您可以安装它iftop来查看当前费率和其他信息的实时网络视图。它确实涵盖了互联网以及本地连接情况。

sudo apt install iftop

你应该用它运行sudo

例子:

sudo iftop

                12.5Kb          25.0Kb          37.5Kb          50.0Kb    62.5Kb
└───────────────┴───────────────┴───────────────┴───────────────┴───────────────
intrepid.home              => Linksys04002.home             0b      0b      0b
                           <=                               0b    424b    424b
239.255.255.250            => 169.254.7.236                 0b      0b      0b
                           <=                            1.85Kb   379b     95b
239.255.255.250            => 10.0.0.148                    0b      0b      0b
                           <=                            1.85Kb   379b     95b
224.0.0.251                => 10.0.0.172                    0b      0b      0b
                           <=                               0b    339b    498b
224.0.0.251                => 10.0.0.233                    0b      0b      0b
                           <=                               0b    322b    596b
255.255.255.255            => TY_WR.home                    0b      0b      0b
                           <=                             800b    320b    320b
224.0.0.251                => Chromecast.home               0b      0b      0b
                           <=                               0b    314b    392b
10.0.0.255                 => DESKTOP-DQO2D3U.home          0b      0b      0b
                           <=                               0b    275b    393b
intrepid.home              => 10.0.0.130                    0b      0b      0b
                           <=                               0b    257b    257b
────────────────────────────────────────────────────────────────────────────────
TX:             cum:   19.4KB   peak:    904b   rates:      0b    260b    281b
RX:                    74.8KB           18.8Kb           4.48Kb  3.96Kb  4.34Kb
TOTAL:                 94.2KB           19.7Kb           4.48Kb  4.22Kb  4.61Kb

或者你可以只显示特定的界面,例如bond0

sudo iftop -i bond0

                12.5Kb          25.0Kb          37.5Kb          50.0Kb    62.5Kb
└───────────────┴───────────────┴───────────────┴───────────────┴───────────────
intrepid.home              => terrance-ubuntu.home       6.91Kb  6.05Kb  5.40Kb
                           <=                            2.23Kb  1.84Kb  1.87Kb
239.255.255.250            => Linksys04002.home             0b      0b      0b
                           <=                               0b   1.62Kb   828b
224.0.0.251                => 10.0.0.172                    0b      0b      0b
                           <=                               0b   1.02Kb   781b
224.0.0.251                => Chromecast.home               0b      0b      0b
                           <=                               0b    953b    555b
intrepid.home              => 10.0.0.148                    0b      0b      0b
                           <=                               0b    668b    668b
224.0.0.251                => 10.0.0.233                    0b      0b      0b
                           <=                               0b    645b    484b
10.0.0.255                 => DESKTOP-DQO2D3U.home          0b      0b      0b
                           <=                             976b    470b    442b
intrepid.home              => Linksys04002.home             0b      0b      0b
                           <=                               0b    424b    424b
intrepid.home              => Chromecast.home               0b      0b      0b
                           <=                               0b    395b    395b
────────────────────────────────────────────────────────────────────────────────
TX:             cum:   70.5KB   peak:   7.67Kb  rates:   6.91Kb  6.34Kb  5.97Kb
RX:                    93.0KB           26.8Kb           3.97Kb  10.4Kb  9.20Kb

要获取与互联网通信的接口,它是填写了默认网关的接口。您可以运行netstat -rn以显示该系统上的所有网络。下面我们可以看到我的网关10.0.0.1bond0接口上。

terrance@Intrepid:~$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG        0 0          0 bond0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 bond0
10.8.0.0        0.0.0.0         255.255.255.0   U         0 0          0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 bond0

或者ip route(感谢 Doug :))将显示相同的网关信息:

terrance@Intrepid:~$ ip route
default via 10.0.0.1 dev bond0 onlink 
10.0.0.0/24 dev bond0 proto kernel scope link src 10.0.0.220 
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1 
169.254.0.0/16 dev bond0 scope link metric 1000 

在此处添加一个屏幕截图,显示上面有条形图来显示哪个应用程序以及哪个 T​​X 或 RX 更高或更低。

在此处输入图片描述

您可以iftop通过按键盘上的qCtrl+来退出。C

答案2

该脚本每 10 秒打印一次整个 LAN 的主网关/路由器 Linux 服务器上的互联网、enp1s0 接收和传输字节数。

doug@s15:~/tmp$ cat internet_mon

#! /bin/dash
#
# internet_mon Smythies 2022.10.30
#       monitor Rx and TX rates from/to internet
#       main gateway computer, s15.
#       see also:
#       https://askubuntu.com/questions/1438204/how-to-get-total-amount-of-tx-and-rx
#


OLD_RX=$( cat /sys/class/net/enp1s0/statistics/rx_bytes )
OLD_TX=$( cat /sys/class/net/enp1s0/statistics/tx_bytes )

while [ 1 ];
do
  sleep 10;
  NEW_RX=$( cat /sys/class/net/enp1s0/statistics/rx_bytes )
  NEW_TX=$( cat /sys/class/net/enp1s0/statistics/tx_bytes )

  echo "RX: $(($NEW_RX-$OLD_RX)) : TX: $(($NEW_TX-$OLD_TX))"
  OLD_RX=$NEW_RX
  OLD_TX=$NEW_TX
done

如果只想获取一次结果并退出,请取消循环并根据需要调整睡眠时间。然后,您可以从某个更高级别的应用程序调用此脚本并捕获输出。或者直接在更高级别的应用程序中执行相同的操作。

示例运行:

doug@s15:~/tmp$ ./internet_mon
RX: 10736 : TX: 6447
RX: 10697 : TX: 8830
RX: 448 : TX: 332
RX: 3239145 : TX: 162304
RX: 917 : TX: 1463
RX: 422000 : TX: 25883
RX: 3446330 : TX: 75867
RX: 36471 : TX: 19241
RX: 43750751 : TX: 881056
RX: 3404760 : TX: 71152
RX: 431 : TX: 314

请注意,我已使该程序可执行:

chmod 755 internet_mon
doug@s15:~/tmp$ ls -l internet_mon
-rwxr-xr-x 1 doug doug 584 Oct 30 11:30 internet_mon

答案3

如果您只想查看监控信息或一次性信息,您可以使用该bmon程序。它是一个交互式网络监控工具。

你可以使用 apt 安装它。然后bmon在你的终端中运行。

apt install bmon

运行后,点击d按键打开详细信息部分,然后使用箭头导航到所需的界面。总 TX 和 RX 将显示在左栏中。

bmon 应用程序


如果您只想打印这两个数字而忽略其他所有内容,您可以使用以下命令在“格式化”模式下运行 bmon:

bmon -p 'en*' -o format:fmt='$(element:name) RX:$(attr:rx:bytes) bytes TX:$(attr:tx:bytes) bytes\n'

如果你想要的是当前利率而不是总利率,你可以使用

bmon -p 'en*' -o format:fmt='$(element:name) RX:$(attr:rxrate:bytes) bytes TX:$(attr:txrate:bytes) bytes\n'

-p选项是过滤接口的策略。对于你的情况,你也可以像这样使用它:-p enp3s0f1,enp3s0f0

这就是在我的系统上显示的样子

$ bmon -p 'wl*' -o format:fmt='$(element:name) RX:$(attr:rx:bytes) bytes TX:$(attr:tx:bytes) bytes\n'
wlp3s0 RX:12482795221 bytes TX:5539315984 bytes
wlp3s0 RX:12482795554 bytes TX:5539316211 bytes
wlp3s0 RX:12482795614 bytes TX:5539316324 bytes
wlp3s0 RX:12482800220 bytes TX:5539321022 bytes
^C

help您可以使用其他格式变量来满足您的需要。您可以通过传递格式选项来获取可用变量的列表。

 bmon -o format:help

相关内容