/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

ファイルを記録してリストすることはできますが、ファイルをls読み取ろうとするたびに(with hexdump、with cat、Pythonのバイナリ読み取りモードなど)、誤った引数エラーが発生します。

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-標準、AR9565 WiFiアダプタ

答え1

このファイルは、/sys/class/net/<iface>/speedサポートされているデバイスでのみ有効です。ethtoolが設定を取得する主にイーサネットアダプタに適用される方法です。

WiFiデバイスの速度を取得するには、iwconfigまたはを使用できますiwlist

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 ).

関連情報