ファイル記述子を使用してネットワークインターフェイスの速度を見つけようとしています。 ethX
の場合、cat /sys/class/net/eth0/speed
を呼び出すだけで簡単に実行できます。残念ながら、この方法はワイヤレスインターフェイスでは機能しません。 /sys/class/net/wlan0/speed
を呼び出すと、エラーが発生します。引数が無効です。
Wlanインターフェースの/sys/class/net/eth0/speed
のようなアナログを知っていますか?
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
注: 2番目の例のリンクの値は56です。
MB/sは計算値であるため、特にwlan0デバイス専用の場所には保存されません。インターフェースを介して転送された総ビット数を取り、そのデータが転送されるのにかかった時間で除算していると思います。
この情報を取得するもう1つの方法は、ツール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)の量も示します。
Slmによるアプローチは間違っています。iwconfig
で示されるデータレートは、リンクのインターフェースでサポートされている最大速度です。現在のところ、データは転送されません。使用 /sys/class/net/<interfacename>/statistics/<tx/rx>_bytes
ライブで転送されたインターフェイスごとのバイトを取得するファイル。