1、使用sar命令

  1. sar -n DEV 1 2
  2. Linux 5.4.0-77-generic (ZJ20070451.genscript.com) 20210716 _x86_64_ (12 CPU)
  3. 085725 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
  4. 085726 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  5. 085726 lo 144.00 144.00 7.03 7.03 0.00 0.00 0.00 0.00
  6. 085726 vethf686b7a 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  7. 085726 enp9s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  8. 085726 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
  9. 085727 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  10. 085727 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  11. 085727 vethf686b7a 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  12. 085727 enp9s0 2.00 2.00 0.13 0.13 0.00 0.00 0.00 0.00
  13. 平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
  14. 平均时间: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  15. 平均时间: lo 72.00 72.00 3.52 3.52 0.00 0.00 0.00 0.00
  16. 平均时间: vethf686b7a 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  17. 平均时间: enp9s0 1.00 1.00 0.06 0.06 0.00 0.00 0.00 0.00

参数说明:
IFACE:LAN接口
rxpck/s:每秒钟接收的数据包
txpck/s:每秒钟发送的数据包
rxbyt/s:每秒钟接收的字节数
txbyt/s:每秒钟发送的字节数
rxcmp/s:每秒钟接收的压缩数据包
txcmp/s:每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包
rxerr/s:每秒钟接收的坏数据包
txerr/s:每秒钟发送的坏数据包
coll/s:每秒冲突数
rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
txcarr/s:发送数据包时,每秒载波错误数
rxfram/s:每秒接收数据包的帧对齐错误数
rxfifo/s:接收的数据包每秒FIFO过速的错误数
txfifo/s:发送的数据包每秒FIFO过速的错误数

2、使用脚本处理后输出

  1. #!/bin/bash
  2. ethn=$1
  3. while true
  4. do
  5. RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  6. TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
  7. sleep 1
  8. RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  9. TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
  10. clear
  11. echo -e "\t RX `date +%k:%M:%S` TX"
  12. RX=$((${RX_next}-${RX_pre}))
  13. TX=$((${TX_next}-${TX_pre}))
  14. if [[ $RX -lt 1024 ]];then
  15. RX="${RX}B/s"
  16. elif [[ $RX -gt 1048576 ]];then
  17. RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
  18. else
  19. RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
  20. fi
  21. if [[ $TX -lt 1024 ]];then
  22. TX="${TX}B/s"
  23. elif [[ $TX -gt 1048576 ]];then
  24. TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
  25. else
  26. TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
  27. fi
  28. echo -e "$ethn \t $RX $TX "
  29. done

3、使用/proc/net/dev

  1. cat /proc/net/dev
  2. Inter-| Receive | Transmit
  3. face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
  4. docker0: 6950752 2344 0 0 0 0 0 0 2308881 12397 0 0 0 0 0 0
  5. lo: 909011256 17579623 0 0 0 0 0 0 909011256 17579623 0 0 0 0 0 0
  6. vethf686b7a: 6983568 2344 0 0 0 0 0 0 2340649 12665 0 0 0 0 0 0
  7. enp9s0: 1004007110 3081734 0 231812 0 0 0 713079 316322807 1347591 0 0 0 0 0 0

参数说明:
最左边的表示接口的名字,Receive表示收包,Transmit表示发送包
bytes表示收发的字节数
packets表示收发正确的包量
errs表示收发错误的包量
drop表示收发丢弃的包量

4、ifconfig

  1. ifconfig
  2. docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  3. inet 198.18.0.1 netmask 255.255.255.0 broadcast 198.18.0.255
  4. inet6 fe80::42:faff:fede:915f prefixlen 64 scopeid 0x20<link>
  5. ether 02:42:fa:de:91:5f txqueuelen 0 (以太网)
  6. RX packets 2344 bytes 6950752 (6.9 MB)
  7. RX errors 0 dropped 0 overruns 0 frame 0
  8. TX packets 12401 bytes 2309733 (2.3 MB)
  9. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  10. enp9s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  11. inet 10.1.26.68 netmask 255.255.255.0 broadcast 10.1.26.255
  12. inet6 fe80::b62e:99ff:feea:1f09 prefixlen 64 scopeid 0x20<link>
  13. ether b4:2e:99:ea:1f:09 txqueuelen 1000 (以太网)
  14. RX packets 3082190 bytes 1004121019 (1.0 GB)
  15. RX errors 0 dropped 231876 overruns 0 frame 0
  16. TX packets 1348015 bytes 316455326 (316.4 MB)
  17. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

可以使用watch命令配合实现实时监控