由于ifconfig
在主要的Linux发行版中显然被弃用,所以我想我会学习一些应该用来代替ifconfig
的ip
工具。
在这里我遇到了一个问题:当它自己运行时, ifconfig
显示除了其他信息之外,在每个接口上接收/传输的字节数。 我无法find一个方法来从ip
得到这个。 这个工具没有这样的function吗? 我可以使用其他内置工具来获取这些统计信息吗?
另一种select是使用/ proc文件系统。 / proc / net / dev文件包含有关configuration的networking接口的统计信息。 每条线路专用于一个networking接口,并且包含用于接收和发送的统计数据。 统计数据包括接收/发送字节总数,数据包,丢包率,错误等指标。
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命令,它可以显示所有的networking接口和相关的统计信息:
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
作为iproute2软件包一部分的ip
命令是新的工具。 link
子命令用于pipe理设备/接口。
如果可以使用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
你可以通过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和parsing输出。
用于接收数据包
# iptables -L INPUT -n -v
为传输的数据包
# iptables -L OUTPUT -n -v
如果服务器是网关,那么你也应该parsingFORWARD链
你可以直接读取/sys/class/net/wlp3s0/statistics/rx_bytes
并直接得到rx_byes而不用调用另一个命令, vnstat
也不错。 据我所知,Linux将所有信息存储在文件中,所以最好find这些文件并获取信息。 find相关文件是挑战。