![如何在 Linux 中检查以太网端口的物理状态?](https://linux22.com/image/483689/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E6%A3%80%E6%9F%A5%E4%BB%A5%E5%A4%AA%E7%BD%91%E7%AB%AF%E5%8F%A3%E7%9A%84%E7%89%A9%E7%90%86%E7%8A%B6%E6%80%81%EF%BC%9F.png)
我想检查指定的 ethX 是否处于物理开启或关闭状态。如何使用命令行执行此操作?
答案1
$ ethtool <eth?>
例如:
$ ethtool eth0
提供:
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000001 (1)
Link detected: yes
答案2
检查/sys/class/net/eth0/operstate
此目录中的其他文件。
据我所知,这是 Linux 2.6+ 所特有的,但它为内核驱动程序提供了一个干净的接口。
文件系统这一部分的完整文档sys
可以在这里找到:
https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net
答案3
ethtool [interface]
最后一行显示你想要的内容:
# ethtool eth0 eth0 的设置: 支持端口:[ TP ] 支持的链接模式:10baseT/Half 10baseT/Full 100baseT/半 100baseT/全 1000baseT/全 支持自动协商:是 公布的链接模式:10baseT/Half 10baseT/Full 100baseT/半 100baseT/全 1000baseT/全 公布的自动协商:是 速度:1000Mb/s 双工:全双工 端口:双绞线 物理强度: 0 收发器:内部 自动协商:开启 支持唤醒:g 唤醒:d 当前消息级别:0x00000037 (55) 检测到链接:是
答案4
dmesg | grep eth
你应该看到所有的状态变化