无法读取 /sys 文件系统下的特定文件

无法读取 /sys 文件系统下的特定文件

在寻找获取各种WiFi信息的方法时,我发现了/sys/class/net/wlan7/speedfile.txt文件。问题是,即使授予了所有读取权限,我也无法读取它。

$ ls -l /sys/class/net/wlan7/speed                                                                                       
-r--r--r-- 1 root root 4096 3月  24 15:08 /sys/class/net/wlan7/speed

$ sudo cat /sys/class/net/wlan7/speed                                                                                    
[sudo] password for xieerqi: 
cat: /sys/class/net/wlan7/speed: Invalid argument

我可以统计文件,我可以列出 with ls,但每次我尝试读取它( with hexdump、 with cat、 with Python in binary read mode 等)时,它都会显示无效参数错误。

strace表明此时显然发生错误:

read(3, 0x7f6ad6b44000, 131072)         = -1 EINVAL (Invalid argument)
write(2, "cat: ", 5cat: )                    = 5
write(2, "/sys/class/net/wlan7/speed", 26/sys/class/net/wlan7/speed) = 26
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4

(完整跟踪粘贴的链接:http://paste.ubuntu.com/24252504/

相比之下,以太网接口的相应文件有效:

$ cat /sys/class/net/eth3/speed                              
10

所以基本上我的问题是:我如何读取这个文件?

操作系统:Ubuntu 16.04 LTS,内核4.4.0-67-generic,AR9565 WiFi适配器

答案1

该文件/sys/class/net/<iface>/speed仅对支持的设备有效ethtool 获取设置方法,主要适用于以太网适配器。

要获取 WiFi 设备的速度,您可以使用iwconfigiwlist

iwconfig wlan7
iwlist wlan7 rate

来自内核文档:

What:       /sys/class/net/<iface>/speed
...  
Description:
        Indicates the interface latest or current speed value. Value is
        an integer representing the link speed in Mbits/sec.

        Note: this attribute is only valid for interfaces that implement
        the ethtool get_settings method (mostly Ethernet ).

相关内容