私はプログラムごとに毎月(または毎日など)の帯域幅レポートを発行できる恒久的に実行されるモニターを探しています。望ましい出力の例:
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
一部のシェルで処理したりできます。iptraf
sort
Linuxのほとんどのモニターはランタイムであり、一部はコマンドを受け取ります。ここ。