我需要通过程序(使用 c 或 perl)检查 eth 连接状态(链接开启和链接关闭)的变化。现在我使用 keepalive 方式,但有时会丢失通知。在消息文件中,我看到“eth0 链接关闭”的内核通知,并且此注释始终正确,因此我正在寻找一种方法(可能是系统调用)来检查 eth 状态。
答案1
如果您想检查链接状态(运营商),您可以检查文件:
$ cat /sys/class/net/eth0/carrier
这将显示 1(链接已启动)或 0(链接已关闭)。
答案2
就像 RH73 的一个解决方法一样(请不要问我为什么我手头有一堆 RH73 盒子,2010 年):
[madhatta@ms01 madhatta]$ cat /etc/redhat-release
Red Hat Linux release 7.3 (Valhalla)
[madhatta@ms01 madhatta]$ uname -a
Linux ms01.company.com 2.4.20-30.7.legacysmp #1 SMP Fri Feb 20 10:12:55 PST 2004 i686 unknown
[madhatta@ms01 madhatta]$ sudo mii-tool eth0
eth0: negotiated 100baseTx-FD, link ok
[madhatta@ms01 madhatta]$