macos 以太网物理速率需分途获取:优先用 sudo ifconfig enx media 查协商速率(如1000baset),失败则用 ioreg 检索 linkspeed;同时须确认 status: active 且无错误计数,否则链路未稳定建立。

macOS 以太网连接中无法通过标准网络命令(如 ifconfig 或 sysctl)直接读取物理协商速率,因为该信息由底层网卡控制器管理,并未统一暴露在系统网络栈中。但你可以用以下几种可靠方式获取真实链路速率(如 100Mbps / 1Gbps / 2.5Gbps)。
查看接口名称与基础状态
先确认你用的是哪个有线接口(通常为 en0、en1 或 en2):
- 运行
networksetup -listallhardwareports | grep -A 1 "Ethernet",找到对应 Device 名称 - 再执行
ifconfig enX | grep -E "(status|media|active)"(把enX替换为实际设备名),检查是否显示status: active和media:行 - 若输出含
autoselect但无具体速率,说明自动协商已启动,但需进一步查实际协商结果
尝试 ifconfig media 命令(最简快捷)
对多数 Realtek、Broadcom 或部分 USB-C 以太网适配器有效:
- 运行
sudo ifconfig enX media(需管理员权限) - 成功时会返回类似:
media: autoselect (1000baseT <full-duplex>)</full-duplex>,其中 1000baseT 即表示协商速率为 1Gbps - 其他常见值包括:
100baseTX(100Mbps)、2500baseT(2.5Gbps)、10gbaseT(10Gbps) - 若提示
Operation not supported,说明该网卡驱动不支持此接口,需换用 ioreg 方式
通过 ioreg 检索硬件级 LinkSpeed(适用于内置/雷电网卡)
当 ifconfig media 失效时,可从 I/O 注册表中查找芯片上报的物理链路速度:
- 先定位网卡设备路径:
ioreg -rn "IOPCIDevice" | grep -A 5 -B 5 -i "enX" - 再用路径查 LinkSpeed 属性(替换为上一步得到的实际路径):
ioreg -r -d 2 -w 0 -l -n "IOEthernetInterface" | grep -E "(LinkSpeed|CurrentLinkSpeed)" - 输出中若含
"LinkSpeed" = 1000000000,即代表 1Gbps;2500000000对应 2.5Gbps - 注意:USB 网卡(尤其 ASIX、CH340 类)常不提供该值,此时
ifconfig media是唯一实用途径
补充:判断协商是否成功的关键信号
仅看速率数字不够,还需确认链路是否稳定达成协商:
-
ifconfig enX | grep "active"—— 必须出现active,否则物理层未连通 -
ifconfig enX | grep "errors\|collisions"—— 错误计数持续上升,可能暗示网线质量差或双工不匹配 - 若始终显示
media: autoselect但无括号内速率,且status为inactive,大概率是网线未插紧、损坏,或交换机端口故障











