#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 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 auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x00000037 (55) Link detected: yes
评论
如果您选中此项:en.wikipedia.org/wiki/OSI_model。您将看到最后一行是关于另一层的:链接层。我刚刚测试过。电缆不良时,物理层已启动,但链路层未启动。然后我切换到另一根电缆,所有层都出现了。
–贾德·迪亚斯(Jader Dias)
09年5月30日19:37
#4 楼
ip link show
是另一个。好旧的
ifconfig dev_name
或
ifconfig -a
还会告诉您接口是否打开。注意:请谨慎使用这些方法,因为它们可能会显示有关链接状态的过时信息。
评论
我认为这是最好的答案-ethtool在我的Ubuntu发行版中不是标准的,因此如果在未连接网络的盒子上使用ethtool不会有帮助。
–user20010
2013年9月25日21:32
我相信ifconfig有时会显示过期数据。当链接断开时,它可以显示UP,但是ethtool界面将始终显示正确的信息AFAIK。
–sed_and_done
2015年10月8日在17:15
我认为@sed_and_done是正确的。在Red Hat VM上,如果我断开NIC的连接,ethtool会立即显示“检测到链接:否”而不是“检测到链接”:是,并且ip link show显示
– Adi Inbar
17年5月4日在18:16
#5 楼
dmesg | grep eth
您应该看到所有状态更改
评论
如果没有管理员权限,这是唯一可行的方法。
– Brian B
13年3月20日在15:30
dmesg在Slackware 14.0上需要root用户
– AnonymousLurker
13年8月30日在14:20
不,不是。我刚刚检查了一下,尽管它在eth0设备上对我有效,但在eth2设备上却不起作用。
– Hi-Angel
15年5月18日在10:02
#6 楼
您还可以使用mii-tool查看链接是否建立,并检查协商的速度。#mii-tool
评论
mii-tool已弃用,不适用于GbE接口。
–戴夫·切尼
09年5月31日下午3:59
@DaveCheney#mii-tool eth0:协商的1000baseT-FD流控制,链接正常
–stolsvik
2011年7月21日11:00
mii-tool的手册页建议使用ethtool。但是,mii-tool会继续工作,如果给定-v(详细)选项,则会更加有用。
–大卫·拉米雷斯(David Ramirez)
2014年7月9日在22:44
#7 楼
要快速添加到@goo的答案中,您可以按以下方式解释ip link
或ip link show INTERFACE
。这是一个在管理上处于上行状态但在物理上处于下行状态的端口:
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
换句话说,您看到的
UP
表示系统已配置为尝试使用NIC进行联网。这里的NO-CARRIER
告诉您什么是阻止网络正常运行的问题。 这是一个在管理上处于关闭状态的端口(从物理上来说,它的物理层为“启动”-它是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
在管理上它是
UP
,LOWER_UP
表示物理层在工作(即有一个载体),第二个UP
确认(实际上)IP层已启动。 评论
很好的解释。谢谢
– Amandeep Singh
19/12/16在19:31
#8 楼
您可以使用以下命令获取完整的详细信息ethtool eth0
如果您只想查看链接状态,请使用下面的命令
mii-tool eth0
#9 楼
如果您的系统使用ifplugd
(例如,在具有Raspbian的Raspberry Pi上),则可以使用关联的状态工具ifplugstatus
获取所有接口的链接状态:ifplugstatus
或特定接口(例如eth0):
ifplugstatus eth0
#10 楼
netplugd是一项服务,可以在插入电缆或拔出电缆时运行程序。因此,命令行将是grep / var / log / messages或dmesg以获得netplugd输出。评论
好吧,不完全是所要求的答案,而是一个有趣的答案。至少对于我来说。
– Sopalajo de Arrierez
2014-10-28 23:44
评论
/ sys / class / net / eth0 / carrier对我来说是这个问题的完美答案。
– Per Knytt
2011年4月29日15:32
好答案。一个小的附录:/ run / network / ifstate也有一些有用的信息。
– PauloAndréHaacke
17年8月3日在13:43