ターミナルで現在のアップロード速度とダウンロード速度を取得するにはどうすればよいですか?


10

端末にネットワーク接続の現在のアップロード速度とダウンロード速度を出力させたい。速度をリアルタイムで監視したくない。「静的」値をファイルに書き込むことができるようにしたいだけです。

どうすれば達成できますか?

回答:


14

奇妙なことに、最も簡単な方法は見ているよう/proc/net/devです。次のように記述して、そのファイルを2回比較し(2番目の遅延あり)、合計バイト値を差し引きます。この場合em1はネットワークアダプターなので、見る必要があるものに変更します。

awk '/em1/ {i++; rx[i]=$2; tx[i]=$10}; END{print rx[2]-rx[1] " " tx[2]-tx[1]}' \
 <(cat /proc/net/dev; sleep 1; cat /proc/net/dev)

出力は2つの数値です。1秒あたりの受信バイト数に続いて1秒あたりの送信バイト数。


3
行きます。それを1つのawkステートメントに要約しました。戦利品。
オリ

11

Oliの優れたソリューションのバリエーションを次に示します。

awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
  <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)

Oliのアプローチと同じ結果が出力されます。

$ awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
>   <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
401500 30286

最初の値は1秒あたりのバイト単位のダウンロード速度で、2番目の値はアップロード速度です。あなたはより人間にやさしいフォーマットを得ることができます:

$ awk '{if(l1){print ($2-l1)/1024"kB/s",($10-l2)/1024"kB/s"} else{l1=$2; l2=$10;}}' \
    <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
398.771kB/s 82.8066kB/s

注:Ubuntu 18.04 wlp1s0では、の代わりに使用する必要がありましたwlan0。これはディストリビューションに依存することがわかっているので、私は回答を編集しません。
Daniel Serodio
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.