プログラム別、月別ネットワーク使用量の測定

プログラム別、月別ネットワーク使用量の測定

私はプログラムごとに毎月(または毎日など)の帯域幅レポートを発行できる恒久的に実行されるモニターを探しています。望ましい出力の例:

Bandwidth consumption: last 30 days
==============
Program     Downloaded   Uploaded
/usr/bin/ssh  30MB       100MB
/usr/bin/java 9000MB     3000MB

(プログラム固有ではなくプロセス別の場合もありますが、アイテムを手動でマージする必要があります)

多くの研究(Stack Exchangeに関する同様の多くの質問を含む)の後でも、そのようなモニターはまだ見つかりませんでした。たぶんこれはLinuxでは不可能かもしれません。あるいは、異常な要求かもしれません。

答え1

nethogs -tプロセス固有の使用量をキャプチャし、出力を解析するために使用されます。 ~からhttps://boopathi.in/blog/capturing-per-process-bandwidth-usage-using-nethogs/

sh -ic "{ /usr/sbin/nethogs -t eth1 &> output; \
kill 0; } | { sleep $TIMEOUT; \
kill 0; }" 3>&1 2>/dev/null

出力フィールドは次のとおりです。

Process / Process id / User id    sent kbps    recv kbps

以下を使用して出力を解析します。https://github.com/boopathi/nethogs-parser

SOのもう一つの解決策:https://stackoverflow.com/a/20705080/3812704

しかし、私は最初の解決策を好みます。

答え2

手動で蓄積して処理したり、netstat一部のシェルで処理したりできます。iptrafsort

Linuxのほとんどのモニターはランタイムであり、一部はコマンドを受け取ります。ここ

関連情報