我正在尝试使用文件描述符查找网络接口的速度。做起来很简单ethX
,只需打电话即可cat /sys/class/net/eth0/speed
。不幸的是,这种方法不适用于无线接口。当我打电话时,/sys/class/net/wlan0/speed
我收到错误:参数无效。
那么,您知道/sys/class/net/eth0/speed
类似 WLAN 接口的模拟接口吗?
答案1
您可以使用iwconfig
查找此信息的工具:
$ iwconfig wlan0
wlan0 IEEE 802.11bg ESSID:"SECRETSSID"
Mode:Managed Frequency:2.462 GHz Access Point: 00:10:7A:93:AE:BF
Bit Rate=48 Mb/s Tx-Power=14 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=55/70 Signal level=-55 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
如果您想要来自 的比特率/sys
,请直接尝试以下操作:
$ cat /sys/class/net/wlan0/wireless/link
51
或者来自/proc
:
$ cat /proc/net/wireless
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan0: 0000 56. -54. -256 0 0 0 0 0 0
笔记:第二个示例中的链接值为 56,例如
我相信 MB/s 是一个计算值,因此它不会专门存储在 wlan0 设备的任何地方。我认为它是将通过接口传输的聚合位除以传输所述数据所花费的时间。
获取此信息的另一种方法是使用该工具iw
。这个工具是一个NL80211基于 CLI 的无线设备配置实用程序。它应该位于任何最新的 Linux 发行版上。
$ iw dev wlan0 link
Connected to 00:10:7A:93:AE:BF (on wlan0)
SSID: SECRETSSID
freq: 2462
RX: 89045514 bytes (194863 packets)
TX: 34783321 bytes (164504 packets)
signal: -54 dBm
tx bitrate: 48.0 MBit/s
这还显示了发送和接收的数据包数量 (RX/TX)。
答案2
slm 的方法是错误的,显示的数据速率iwconfig
是链路接口支持的最大速度。这不是数据传输的电流。使用该/sys/class/net/<interfacename>/statistics/<tx/rx>_bytes
文件获取每个接口实时传输的字节数。
答案3
简短的回答是“不”,Linux 中仍然没有适合 WiFi 的 sysfs 接口。 [最后检查:Linux 5.10]。但这并不意味着你不走运。该信息通过名为“的 C API”公开给用户NL80211”,所以你所需要的只是一个可以提取你想要的信息的程序。我推荐wavemon
它有一个curses界面,可以实时显示信息:
┌─Interface──────────────────────────────────────────────────────────────────────────────────────────────────┐
│wlan0 (IEEE 802.11), phy 0, reg: n/a, SSID: Fifi's HiFi WiFi │
├─Levels─────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│link quality: 54% (38/70) │
│========================================================== │
│ │
│ │
│signal level: -72 dBm (0.06 nW) │
│================================= │
│ │
├─Statistics─────────────────────────────────────────────────────────────────────────────────────────────────┤
│RX: 80k (53.26 MiB), drop: 12 (0.0%) │
│TX: 88k (31.45 MiB), retries: 8k (9.7%) │
├─Info───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│mode: Managed, connected to: 74:DA:88:42:CA:FE, time: 27:45m, inactive: 0.0s │
│freq: 5785 MHz, ctr1: 5775 MHz, channel: 157 (width: 80 MHz) │
│rx rate: 234.0 Mbit/s VHT-MCS 5 80MHz VHT-NSS 1, tx rate: 260.0 Mbit/s VHT-MCS 3 80MHz short GI VHT-NSS 2 │
│beacons: 16020, lost: 298, avg sig: -69 dBm, interval: 0.1s, DTIM: 1 │
│power mgt: on, tx-power: 22 dBm (158.49 mW) │
│retry: short limit 7, rts/cts: off, frag: off │
├─Network────────────────────────────────────────────────────────────────────────────────────────────────────┤
│wlan0 (UP RUNNING BROADCAST MULTICAST) │
│mac: 34:C9:3D:CC:DD:EE, qlen: 1000 │
│ip: 192.168.9.167/24 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
F1 info F2 lhist F3 scan F7 prefs F8 help F9 about F10 quit
这是大量数据,但如果您检查“信息”部分,您会找到您要查找的内容:
发送率:260.0兆比特/秒VHT-MCS 3 80MHz 短 GI VHT-NSS 2
这就是 MAC 层的无线连接速率,这正是/sys/class/net/wlan0/speed
1 应该显示的。
^好吧,从技术上讲,应该是speedtx
这样,speedrx
因为 WiFi 是不对称的。