一些背景:有时我的 wi-fi 连接突然断开,所以我输入sudo ifconfig wlan0
并检查单词RUNNING
。相应的行如下所示:
UP BROADCAST RUNNING MULTICAST [...]
当连接断开时,没有任何RUNNING
设置;我无法连接到任何东西,但接口仍然可用。
我正在考虑编写一个脚本来定期检查状态RUNNING
。要提取该字符串,请使用awk
类似:sudo ifconfig wlan0 | awk '/RUNNING/ {print $3}'
。
是否有另一种方法,例如检查文件系统而不是解析 ifconfig 的输出?
我正在使用 Debian Wheezy。
谢谢。
更多信息:
好的,刚刚做了一些研究并消除了一些概念上的混乱。
和UP
标志RUNNING
不同。第一个表示接口“当前已初始化”[1],即“系统为接口分配了资源”[2]——它没有说明任何有关数据包传输的信息。
该RUNNING
标志实际上指示正在发送和接收数据包。显然,如果以太网电缆被拔掉,这个标志就会消失。
[1]https://docs.oracle.com/cd/E19253-01/816-4554/ipconfig-141/index.html
[2]https://stackoverflow.com/questions/11679514/what-is-the-difference- Between-iff-up-and-iff-running
我不知道我的(或任何)无线连接发生了什么,但结果是相同的:接口保持打开状态(我的笔记本电脑中的 Wi-Fi LED 灯保持亮起),而连接完全丢失。
答案1
您可以检查以下文件来监控 wi-fi 连接状态,而不是使用类似ifconfig -s
或 之类的命令:netstat -i
/sys/class/net/wlan0/flags
指示设备是打开还是关闭。它没有告诉任何有关数据包传输的信息,因此检查连接是否正常工作并没有真正的用处。它的内容/值是0x1003
(开)和0x1002
(关)。
/sys/class/net/wlan0/operstate
指示连接是否可操作(正在发送和接收数据包)。该RUNNING
文件相当于ifconfig
.它的值为up
和down
。
/sys/class/net/wlan0/carrier
工作原理就像/sys/class/net/wlan0/operstate
.它的值是1
(上)和0
(下)。如果设备关闭,该文件为空。