![如何在没有 ifconfig 的情况下获取 TX/RX 字节?](https://linux22.com/image/803799/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%20ifconfig%20%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E8%8E%B7%E5%8F%96%20TX%2FRX%20%E5%AD%97%E8%8A%82%EF%BC%9F.png)
由于ifconfig
在主要的 Linux 发行版中显然已被弃用,我想我会了解一些ip
应该用来代替的工具ifconfig
。
这里我遇到了一个问题:单独运行时,ifconfig
除了其他信息外,还显示每个接口上接收/传输的字节数。我找不到从中获取这些信息的方法ip
。这个工具中没有这样的功能吗?我可以使用哪些其他内置工具来获取这些统计数据?
答案1
另一个选项是使用 /proc 文件系统。/proc/net/dev文件包含有关已配置网络接口的统计信息。每行专用于一个网络接口,其中包含接收和传输的统计信息。统计信息包括接收/传输的字节总数、数据包、丢失、错误等指标。
cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 29846937 129576 0 0 0 0 0 0 29846937 129576 0 0 0 0 0 0
wlan0: 9467393340 8027251 0 0 0 0 0 0 2559312961 5896509 0 0 0 0 0 0
或者您可以尝试网络状态该命令可以显示所有网络接口和相关统计信息:
netstat -i
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
lo 65536 0 130435 0 0 0 130435 0 0 0 LRU
wlan0 1492 0 8028018 0 0 0 5897361 0 0 0 BMRU
答案2
该ip
命令是 iproute2 包的一部分,是新工具。link
子命令用于管理设备/接口。
如果你可以使用以下方式获取接口的统计信息ip -s link
root:~# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
50679705 529967 0 0 0 0
TX: bytes packets errors dropped carrier collsns
50679705 529967 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1d:7d:aa:e3:4e brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
187663757 308710386 0 0 0 0
TX: bytes packets errors dropped carrier collsns
4051284587 532435117 0 0 0 0
答案3
您可以通过 proc 获取所有必要的信息
# cat /sys/class/net/eth0/statistics/rx_bytes
# cat /sys/class/net/eth0/statistics/rx_packets
# cat /sys/class/net/eth0/statistics/tx_packets
# cat /sys/class/net/eth0/statistics/tx_bytes
您还可以使用 iptables 并解析输出。
对于接收到的数据包
# iptables -L INPUT -n -v
对于已传输的数据包
# iptables -L OUTPUT -n -v
如果服务器是网关,那么您还应该解析向前链
答案4
您也可以使用 ethtool:
ethtool -S eth0
ethtool 的好处是您可以看到每个 rx / tx 队列以及它们是如何平衡的。
我发现watch
使用所有这些工具来更新屏幕是一个很好的工具。但是,这些工具中的大多数都以每秒字节或数据包的形式显示流量。我发现很难将字节转换为千兆或将 pps 转换为每秒数百万个数据包。只是一个提示,看看 Cloudflare 的mmwatch
工具。它的功能与 watch 相同,但会自动进行计算并像 watch 一样将输出显示到屏幕上。(示例:因此您将看到1.2m/s
每秒 120 万个数据包)
https://github.com/cloudflare/cloudflare-blog/blob/master/2017-06-29-ssdp/mmwatch
此外,还ethtool -S eth0
给出了大量的输出,我使用以下方式显示接收队列和丢弃,同时使用 mmwatch:
mmwatch "ethtool -S eth0 | grep 'rx-\|discard'"