macOS终端无法一键获取所有网卡物理速率,需分有线和无线处理:有线用sudo ifconfig enX media或ioreg查协商速率,无线用airport -I | grep lastTxRate查当前传输速率。
macos 终端无法直接读取所有网卡的“物理连接速率”(如 1gbps、2.5gbps 这类协商速率),因为该信息不在标准网络栈统计中,而是由底层驱动或硬件控制器管理。但你可以通过组合命令分别获取有线网卡的物理协商速率和无线网卡的当前传输速率,两者都属于真实物理层指标。
查有线网卡物理协商速率(如 en0/en1/en2)
macOS 不提供通用 ifconfig 或 sysctl 接口输出以太网协商速率,但可通过 IORegistry 检索底层 PCI/USB 网卡控制器报告的 Link Speed:
- 运行:ioreg -rn "IOPCIDevice" | grep -A 5 -B 5 -i "en[0-9]" —— 定位对应网卡设备路径(如
IOService:/AppleACPIPlatformExpert/PCI0@0/ApplePCIFamily/ethernet@1c,2) - 再用该路径查 link speed:ioreg -r -d 2 -w 0 -l -n "IOEthernetInterface" | grep -E "(LinkSpeed|CurrentLinkSpeed|LinkStatus)"
- 更实用的替代方式是使用 Apple 私有工具:sudo ifconfig en1 media(部分 Realtek/Broadcom 芯片支持,会显示类似
media: autoselect (1000baseT <full-duplex>),其中1000baseT即表示 1Gbps 物理速率)
查 Wi-Fi 网卡当前物理传输速率(Transmit Rate)
这是最稳定可获取的物理层速率,由 AirPort 驱动实时上报:
- 执行:/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep lastTxRate
- 输出如:
lastTxRate: 866,单位为 Mbps,代表当前实际协商的 802.11ac 物理层速率 - 若需持续监控,加 watch:watch -n 1 '/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep -E "(lastTxRate|agrCtlRSSI|channel)"'
查所有接口名称及类型,避免误查
先确认哪些是真实物理接口(排除 bridge、lo0、utun、awdl):
- networksetup -listallhardwareports —— 显示 Device(如 en0)、Hardware Port(如 USB 10/100/1000 LAN)、Type(Ethernet/Wi-Fi)
- ifconfig | grep -E "^en[0-9]|^awdl|^llw|^bridge" | cut -d: -f1 —— 快速过滤出可能的物理接口名
- 注意:awdl、llw、bridge、ipsec 等是虚拟/逻辑接口,无物理速率概念
补充说明:为什么不能一键全查?
macOS 将有线与无线的物理速率管理分离在不同子系统中:Wi-Fi 通过 Apple80211 框架统一暴露,而以太网速率依赖具体芯片厂商是否向 IOKit 注册 LinkSpeed 属性。USB-C 以太网适配器(如 ASIX AX88179)通常不暴露该值,此时 ifconfig en2 media 是唯一可靠方式;雷电/内置网卡则更可能在 ioreg 中体现。没有一个命令能跨所有硬件统一返回“物理速率”,必须按接口类型分途处理。


















