各プロセスが使用している帯域幅の量を示すことができるユーティリティを探しています。リストをconkyに送りたいので、データを印刷して終了します。
NetHogs を試すことができます。
NetHogsは小さな「ネットトップ」ツールです。ほとんどのツールが行うように、プロトコルごとまたはサブネットごとにトラフィックを分割する代わりに、プロセスごとに帯域幅をグループ化します。 NetHogsは、特別なカーネルモジュールのロードに依存していません。突然大量のネットワークトラフィックが発生した場合は、NetHogsを起動して、どのPIDがこれを引き起こしているかをすぐに確認できます。これにより、ワイルドになり、突然帯域幅を占有しているプログラムを簡単に特定できます。
atop
を試してください...最大限に活用するには、追加のカーネルパッチ(I/Oアカウンティングパッチ)を有効にする必要がある場合があります。
atop
がオプションではない場合は、netstat -anp --inet
を(ルートとして)使用して、どのTCP/UDPポートがどのプロセスで使用されているか(または、おそらくlsof
forそれ)。そこから、オープンソケットを取得した各プロセスを反復処理し、ltrace -S
またはstrace
を使用してそれに接続し、読み取り、書き込み、送受信、またはtcpdump
を使用します。リストにあるローカルIPアドレスとTCP/UDPポートを指定するフィルターを使用します。
atop
は、これらの中で最も便利です。必要なカーネルサポートがインストールされている場合。過去には、atop
を使用したI/Oプロファイリングをサポートすることのみを目的として、顧客や雇用主に特別なシステム(本番イメージとは異なる)をセットアップしてもらいました。ただし、これらの他の手法を使用すると、そこに到達できます。
SystemTapを使用して何かを行うこともできると確信していますが、これを行うための簡単な事前調理レシピは知りません。 SystemTapは非常にプログラミング分析ツールです。