关于网卡接口speed值为-1的含义及离线网卡带宽检测方法咨询
嗨,我来帮你拆解这个问题~
首先说下你看到的-1是什么意思:当网卡处于链路未激活状态(哪怕你用ifconfig分配了IP,但如果没插网线、或者链路没协商成功,本质上硬件层面没建立有效连接),系统没办法从网卡硬件获取到当前实际运行的速率,所以/sys/class/net/eno1/speed就会返回-1——这个值不是说网卡坏了或者不支持速率,只是表示“当前无法读取到有效链路速率”而已。
接下来是你最关心的:怎么查离线(down状态)网卡的硬件带宽能力?给你几个不用激活网卡就能搞定的方法:
- 用ethtool直接查硬件支持的速率列表:哪怕网卡是down的,这个命令也能读取网卡的硬件参数。执行
ethtool eno1,找到Supported link modes这一项,里面会列出网卡所有支持的速率和双工模式。比如如果看到1000baseT/Full,就说明它支持1G带宽;如果有10000baseT/Full,就是支持10G。举个例子:
ethtool eno1 # 输出里的关键部分: # Supported link modes: 10baseT/Half 10baseT/Full # 100baseT/Half 100baseT/Full # 1000baseT/Full
这里最后一行就说明这个网卡最大支持1Gbps。
用lshw查看网卡硬件规格:这个工具会直接读取网卡的硬件固有信息,包括最大带宽。执行
lshw -class network,找到对应网卡(比如eno1)的条目,里面会有类似capacity: 1Gbit/s或者capacity: 10Gbit/s的字段,一眼就能看到硬件上限。查看PCI设备详情:如果上面两个命令你都没法用,还可以通过PCI信息查网卡型号,再对应看规格。执行
lspci -vvv,找到对应网卡的条目,里面会有网卡的型号(比如Intel Corporation I210 Gigabit Network Connection),从型号就能判断它的带宽能力——比如I210系列就是1G网卡。
最后补充个小提醒:你之前用ifconfig给网卡分配IP,其实只是给网卡配置了IP地址,但如果没插网线,链路还是没协商,所以网卡的speed依然没法读取到有效数值。要获取当前运行速率,必须让网卡建立有效链路(插上网线、链路up并协商成功),但要查硬件本身的能力,用上面的方法就足够啦。
备注:内容来源于stack exchange,提问作者mona moghadampanah

