Linuxでほとんどの帯域幅を使用しているアプリケーションを見つける方法はありますか?[閉まっている]


56

各プロセスが使用している帯域幅を表示できるユーティリティを探しています。リストをconkyにフィードしたいので、データを出力して終了するだけです。

回答:


71

NetHogsを試すことができます。

NetHogsは小さな「ネットトップ」ツールです。ほとんどのツールが行うように、プロトコルまたはサブネットごとにトラフィックを分類する代わりに、プロセスごとに帯域幅をグループ化します。NetHogsは、ロードされる特別なカーネルモジュールに依存しません。突然大量のネットワークトラフィックが発生した場合は、NetHogsを起動して、どのPIDがこれを引き起こしているかをすぐに確認できます。これにより、ワイルドになり、突然帯域幅を占有しているプログラムを簡単に特定できます。

NetHogs_Screenshot


ほぼ正確に私が必要なものが、それはちょうど動作しません:(
vava 09

まあ、何が機能しないのですか?エラーはありますか?それはまったく始まりませんか?コンソール出力?
マイルド

ipv6では動作しません
zb

ルートとして実行する必要があります。無差別モードが推奨されます。sudo nethogs -p eth2。デフォルトでeth0でない場合は、イーサネットを指定する必要があります。
アナンドゥMダス

@vavaレポジトリに問題があり、0.8.1で修正されていますが、ソースからビルドする必要があります(非常に簡単です)。この投稿を参照してください:askubuntu.com/questions/726601/…–
マシュー

6

ここにはかなりの数のリストがあります

しかし、私のお気に入りはiftoptcpdumpのままですWiresharkも非常に良いオプションです。


Wiresharkには倫理上の問題がありますが、ネットワーク上だけではありません... localhostのみをプローブする方法がない限り、その場合は興味があります。
グヌーピ09

5
混合モードを有効にしない場合、ホストに向けられたトラフィックのみをキャプチャする必要があります。
アモック

ええと、これらのユーティリティのいずれも、どのプロセスがほとんどの帯域幅を使用しているかを教えてくれません。それが私が求めていることです。
vava 09

5

試してみてくださいatop ...最大限に活用するには、追加のカーネルパッチ(I / Oアカウンティングパッチ)を有効にする必要があります。

場合はatopオプションではありませんその後、使用netstat -anp --inetTCP / UDPポートが使用中のプロセス(あるいは使用していることであるそれらのリストを提供するために(rootとして)lsofそのために)。そこから単純に開いたソケットを持って、各プロセスを反復し、いずれかを使用して、それに接続するltrace -Sか、strace読み込みを見て、送信および受信、または使用し、書き込みをtcpdumpローカルのIPアドレス(複数可)およびTCP / UDPポートを指定してフィルタを用いてリストされた。

atop確かにこれらの中で最も便利なのは...必要なカーネルサポートがインストールされている場合です。過去に、を使用してI / Oプロファイリングをサポートするという唯一の目的のために、顧客と雇用主が特別なシステム(本番イメージとは異なる)をセットアップしましたatop。ただし、これらの他の手法を使用すればそこに到達できます。

SystemTapを使用して何かを行うこともできると確信していますが、これを行うための簡単な調理済みのレシピは知りません。SystemTapは非常にプログラミング分析ツールです。


あなただけのネットワークを占有しているプロセスを知りたい場合は、実際の帯域幅が使用されていない、あなただけ使用することができnetstat -anp --inet、およびチェックRecv-QSend-Q
golimar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.