다양한 WiFi 정보를 얻을 수 있는 방법을 찾던 중 /sys/class/net/wlan7/speed
file.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 ).