最准的方法是看 ethtool 输出的 link detected: yes,它直接读取网卡phy层信号;/sys/class/net/eth0/carrier 返回1也表明物理连通;二者结合 operstate=up 才确认网卡启用且链路正常。

最准的方法是看 ethtool 输出里的 Link detected: yes,不是看有没有 IP 或接口是否 UP。
用 ethtool 查物理链路是否连通
这是唯一能直接读取网卡 PHY 层信号的命令,结果最可信。执行 sudo ethtool eth0(把 eth0 换成你的网卡名),重点盯住这一行:
-
Link detected: yes→ 网线插好了,对端设备也通电且端口没 shutdown -
Link detected: no→ 网线没插、松动、损坏,或交换机/路由器那头关机、端口 disable -
speed: unknown!或duplex: Unknown!通常伴随no出现,说明链路根本没协商起来
注意:部分老旧网卡驱动不支持 carrier detect,ethtool 可能始终显示 no,这时得换其他方式交叉验证。
用 /sys/class/net/ 文件系统快速确认
无需安装任何工具,内核原生暴露状态,适合最小化系统或容器环境:
-
cat /sys/class/net/eth0/carrier→ 返回1表示物理链路通,0表示断开 -
cat /sys/class/net/eth0/operstate→ 返回up表示驱动就绪、接口已启用;返回down可能是被禁用,也可能是硬件未识别 - 组合判断:
operstate=up且carrier=1才算真正“插好网线且可用”
如果 /sys/class/net/eth0/carrier 文件不存在,说明该网卡驱动不支持 carrier 检测(常见于某些 USB 网卡或虚拟设备)。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
别只信 ip link show 的 LOWER_UP
ip link show eth0 输出里看到 LOWER_UP 很诱人,但它只是内核根据驱动上报状态做的推测,并非真实 PHY 信号:
- 有些驱动会“假报”
LOWER_UP,尤其在热插拔后未重协商时 - 如果输出含
NO-CARRIER标志,那基本可以确定物理链路断了,比单看LOWER_UP更可靠 -
state UP只代表接口被启用,和网线无关;state DOWN则说明被ip link set down过
所以它适合快速筛查,但不能替代 ethtool 或 /sys/class/net/*/carrier。
用 nmcli 查连接状态前先看清它管什么
nmcli device status 显示 connected,只代表 NetworkManager 成功应用了某个 connection 配置,并不等于网线插着:
- 网线拔了但配置没删,它可能还显示
connected - 网线插着但 NetworkManager 没 autoconnect,可能显示
unavailable - 真要查物理层,得用
nmcli -g WIRED-PROPERTIES.CARRIER device show eth0,输出on才算数
这个字段只对有线网卡有效,Wi-Fi 或 bond 设备不提供;而且前提是 NetworkManager 正在管理该设备(不是 unmanaged 状态)。
真正容易被忽略的是:carrier 和 operstate 是两个独立信号,一个反映物理层,一个反映驱动与内核交互状态。只看其中一个,很容易误判——比如 operstate=up 但 carrier=0,就是典型的“网卡活着,但网线没插”。










