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

관련 정보