回答:
奇妙なことに、最も簡単な方法は見ているよう/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秒あたりの送信バイト数。
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
wlp1s0では、の代わりに使用する必要がありましたwlan0。これはディストリビューションに依存することがわかっているので、私は回答を編集しません。