it-swarm-ja.com

Linuxコマンドラインから任意の秒でインターフェイスの帯域幅を取得するにはどうすればよいですか?

私は、任意の秒、またはその他の小さな時間の増分でネットワークインターフェイスの帯域幅を取得したい学校のプロジェクトを行っています。私が取り組んでいるPerlスクリプトにはこれが必要です。したがって、非対話型である必要があり、結果を出力するだけです。

助言がありますか?

3
Alex

インターフェイスが起動してからeth0が送受信したバイト数は、それぞれ/sys/class/net/eth0/statistics/tx_bytes/sys/class/net/eth0/statistics/rx_bytesで読み取ることができます。パケット数は…/tx_packets…/rx_packetsで読み取ることができます。これらのファイルを提供しない古いカーネルを使用している場合、データは/sbin/ifconfig eth0の出力で利用できます。

簡単なアプローチは次のとおりです。

  • 実行ifconfig interface name一度、その出力をキャプチャします
  • 「RXバイト」と「TXバイト」から値を抽出します
  • 1秒待つ
  • 最初の2つの手順をもう一度繰り返します
  • デルタを計算する
0
vtest