GNU/Linux >> Linux の 問題 >  >> Linux

現在のネットワーク使用率はどのように判断すればよいですか?

ifstat が役立つと思います:

[[email protected] ~]# ifstat -i eth0 -q 1 1
       eth0
 KB/s in  KB/s out
 3390.26     69.69

単純に行う最善の方法は、おそらく /proc/net/dev を解析することです (/proc に注意してください ポータブルではありません)。これが bash です 計算できるはずのスクリプトをすぐにまとめました:

#!/bin/bash

_die() {
    printf '%s\n' "[email protected]"
    exit 1
}

_interface=$1

[[ ${_interface} ]] || _die 'Usage: ifspeed [interface]'
grep -q "^ *${_interface}:" /proc/net/dev || _die "Interface ${_interface} not found in /proc/net/dev"

_interface_bytes_in_old=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { sub(/^.*:/, "") ; print $1 } else { print $2 } }' /proc/net/dev)
_interface_bytes_out_old=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { print $9 } else { print $10 } }' /proc/net/dev)

while sleep 1; do
    _interface_bytes_in_new=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { sub(/^.*:/, "") ; print $1 } else { print $2 } }' /proc/net/dev)
    _interface_bytes_out_new=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { print $9 } else { print $10 } }' /proc/net/dev)

    printf '%s: %s\n' 'Bytes in/sec'  "$(( _interface_bytes_in_new - _interface_bytes_in_old ))" \
                      'Bytes out/sec' "$(( _interface_bytes_out_new - _interface_bytes_out_old ))"

    # printf '%s: %s\n' 'Kilobytes in/sec'  "$(( ( _interface_bytes_in_new - _interface_bytes_in_old ) / 1024 ))" \
    #                   'Kilobytes out/sec' "$(( ( _interface_bytes_out_new - _interface_bytes_out_old ) / 1024 ))"

    # printf '%s: %s\n' 'Megabits in/sec'  "$(( ( _interface_bytes_in_new - _interface_bytes_in_old ) / 131072 ))" \
    #                   'Megabits out/sec' "$(( ( _interface_bytes_out_new - _interface_bytes_out_old ) / 131072 ))"

    _interface_bytes_in_old=${_interface_bytes_in_new}
    _interface_bytes_out_old=${_interface_bytes_out_new}
done

sleep に注意してください while ループで操作を実行するのにかかる時間を考慮していないため、これは (ごくわずかに) 不正確です。私の 600mhz の銅鉱山では、ループに 0.011 秒かかります。ほとんどの場合、無視できるほどの不正確さです。 (コメント アウトされた) キロバイト/メガビット出力を使用する場合にも注意してください。bash は整数演算しか認識しません。


トラフィックの月次記録を保持する vnstat や、カーネルに保存されている値から直接値を取得する slurm などのネットワーク トラフィック モニターがあります。ほとんどのディストリビューション リポジトリで利用できます。

slurm -i ra0 を実行すると、次のように表示されます。 :


Linux
  1. Linuxmtrコマンドの使用方法

  2. ホームネットワークでファイルを共有する方法は?

  3. .net でファイルシステムが大文字と小文字を区別するかどうかを確認するにはどうすればよいですか?

  1. MSBuild で現在のオペレーティング システムを取得する方法は?

  2. ネットワーク インターフェイスの順序を制御するにはどうすればよいですか?

  3. 8G RAM と SSD - スワップの大きさはどれくらいですか?

  1. Linux –現在のプロセスでネットワークの共有を解除する方法は?

  2. Tmuxの現在のディレクトリに新しいウィンドウを作成するにはどうすればよいですか?

  3. Linux で優先ネットワーク インターフェイスを設定する方法