如何检查Linux中以太网端口的物理状态?

我想检查一个指定的ethX是物理上还是下来。 我怎么用命令行来做到这一点?

    $ 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 

    检查/sys/class/net/eth0/operstate和这个目录下的其他文件

    据我所知,这是特定于Linux 2.6,但提供了一个干净的接口,内核驱动程序。

    ethtool [interface]

    最后一行显示你想要的:

     #ethtool eth0
     eth0的设置:
            支持的端口:[TP]
            支持的链接模式:10baseT / Half 10baseT / Full 
                                     100baseT /一半100baseT /全 
                                     1000BaseT的/全 
            支持自动协商:是
            广告链接模式:10baseT / Half 10baseT / Full 
                                     100baseT /一半100baseT /全 
                                     1000BaseT的/全 
            广告自动协商:是的
            速度:1000Mb / s
            双面打印:完整
            端口:双绞线
             PHYAD:0
            收发器:内部
            自动协商:打开
            支持唤醒:g
            唤醒:d
            当前消息级别:0x00000037(55)
            检测到链接:是的
    
     ip link show 

    是另一个。 好老了

     ifconfig dev_name 

    要么

     ifconfig -a 

    也会告诉你,如果界面是起来的

     dmesg | grep eth 

    你应该看到所有的状态变化

    您也可以使用mii-tool来查看链接是否启动并检查协商的速度。

    #mii-tool
    eth0:协商100baseTx-FD,链接ok

    如果您的系统正在使用ifplugd (例如在Raspbian的Raspberry Pi上),那么您可以使用相关的状态工具ifplugstatus来获取所有接口的链接状态:

     ifplugstatus 

    或特定的接口(如eth0):

     ifplugstatus eth0 

    netplugd是一种可以在插入电缆或取出电缆时运行程序的服务。 所以命令行是grep / var / log / messages或者dmesg for netplugd输出。

    要快速添加到@ goo的答案,您将解释ip linkip link show INTERFACE如下。

    这是一个行政pipe理上的端口,但在物理上是:

    2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000

    换句话说,你可以看到UP表示系统configuration为尝试使用网卡进行networking连接。 NO-CARRIER在这里告诉你防止networking工作的问题是什么。

    这是一个pipe理层下来的端口(它的物理层是'up',从技术上讲它是一个VM):

    3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

    最后,这个端口正常工作:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000

    它是pipe理上的, LOWER_UP表示物理层正在工作(即有一个载体),第二个UP确认(实际上)IP层已经启动。

    您可以通过下面的命令获得完整的细节

     ethtool eth0 

    如果你只是想看到链接状态下面的命令

     mii-tool eth0