为什么“iw wlan0 scan”不稳定?有时它会提供输出,但大多数时候什么都不返回,并提供“资源繁忙”或“网络已关闭”错误消息。我用 shell 脚本编写了此扫描,这是问题所在吗?还有其他关于根本原因/修复的想法吗?
是什么原因导致了这个资源繁忙问题?资源繁忙错误始终是上述两个错误中的第一个。
答案1
这是为了回答有关“网络中断”的问题部分
iw dev wlan0 scan
command failed: Network is down (-100)
对命令进行 strace 以找到问题的线索
access("/proc/net", R_OK) = 0
access("/proc/net/unix", R_OK) = 0
socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
ioctl(4, SIOCGIFINDEX, {ifr_name="wlan0", }) = 0
close(4) = 0
socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
ioctl(4, SIOCGIFINDEX, {ifr_name="wlan0", }) = 0
close(4) = 0
这表明问题源于接口状态。
现在,正如您所知,在正常运行中,当网络接口已激活并正在工作时,您会在输出的第三行看到现已弃用的 ifconfig
UP BROADCAST RUNNING MULTICAST
对于没有被激活的网络接口,没有“UP”和“RUNNING”,通常只是
BROADCAST MULTICAST
所以在做了简单的
ifconfig wlan0 up
要将 wlan0 接口置于“启动并运行”状态,命令
iw dev wlan0 scan
不再给出“网络已关闭”的错误消息,并对接口设备支持的WiFi频率进行了扫描。
有时错误消息比应有的更不透明。
至于为什么会出现错误消息“设备或资源繁忙”,这是因为一些其他 WiFi 相关程序正在运行并访问 WiFi 接口,例如 wpa_supplicant、hostapd、网络管理器、wicked、kismet、wavemon,这只是众多可能性中的六种,正如其他人在评论中正确指出的那样。