用 ethtool 查看网卡物理链路是否 up 的最可靠方式是检查 link detected: yes 输出,它直接反映 phy 层真实连通状态;若为 no,则表明网线未插、对端关机或交换机端口 down,与 ip link 的 state up 无关。

用 ethtool 查看网卡物理链路是否 up
ethtool 是最直接、最可靠的工具,它能读取网卡驱动和 PHY 层的真实状态,不依赖 IP 配置或上层协议。运行 ethtool eth0(把 eth0 换成你的网卡名)后重点看 Link detected: yes 这一行 —— 它代表物理线缆已连通、两端协商成功。
常见错误现象:Link detected: no 时,哪怕 ip link show eth0 显示 state UP,也说明物理层没通(比如网线松了、对端关机、交换机端口 shutdown)。别信 UP,信 Link detected。
- 确认网卡名:用
ip -br link show | grep -v "lo$"快速列出非回环网卡 - 如果提示
No such device,说明网卡名不对或驱动没加载;lspci | grep -i ethernet可查硬件是否存在 - 部分 USB 网卡或虚拟网卡(如
veth)不支持ethtool查询链路状态,会报Operation not supported
为什么不用 ip link show 判断物理连通性
ip link show eth0 显示的 state UP 仅代表内核接口已启用,和物理线缆毫无关系。它可能在网线拔掉后依然显示 UP,尤其当网卡被手动 ip link set eth0 up 过。
典型误导场景:
- 网线断开但接口未 down:
state UP+NO-CARRIER→ 表示驱动认为接口开着,但检测不到载波信号 - 网线插着但对端没电:
state UP+LOWER_UP仍可能缺失,NO-CARRIER通常还在 -
NO-CARRIER是比state DOWN更关键的物理层线索,但它不如ethtool的Link detected直观可靠
排查 ethtool 返回 Link detected: no 的真实原因
这不是“网卡坏了”的等价判断,而是触发下一步排查的起点。优先按顺序验证:
- 检查网线两端:是否插紧?另一端设备是否开机?交换机端口是否
shutdown? - 确认速率/双工模式匹配:对端设为强制 100Mbps 全双工,而本端是 auto-negotiation,可能导致协商失败 → 用
ethtool -s eth0 speed 100 duplex full autoneg off临时强制匹配(仅调试用) - 查看
dmesg | grep -i "eth0\|link",找类似link up/link down或phy link down的内核日志,确认是否有 PHY 初始化失败 - 某些老网卡(如某些 Realtek RTL8169)需加载专有固件,
dmesg若出现firmware request failed就得补装linux-firmware包
脚本化检查时注意兼容性和权限
写监控脚本别只依赖 ethtool eth0 | grep "Link detected" | awk '{print $3}',因为输出格式在不同版本略有差异(比如有些返回 yes,有些是 yes. 带句点)。
更稳妥的做法:
- 加
sudo:多数情况下ethtool需要 root 权限才能读取 PHY 寄存器,普通用户执行常静默失败 - 用
ethtool -b eth0 2>/dev/null | grep -q "Link.*yes"比单纯 grep 文本更抗格式变化 - 避免硬编码网卡名:通过
ls /sys/class/net/*/device/driver/module 2>/dev/null | head -n1 | awk -F'/' '{print $(NF-2)}'可动态获取主网卡(但生产环境建议明确指定)
物理链路状态不是“通”或“不通”的二值问题,而是涉及线缆、PHY、协商、固件、驱动五层协同的结果。看到 Link detected: no 时,先别怀疑网卡,先看网线插没插牢。











