この質問を改善したいですか? スーパーユーザーのためのon-topicになるように質問を更新してください。
クローズド 2年前
各プロセスがどれくらいの帯域幅を使っているかを表示してくれるユーティリティを探しています。それは単にデータを印刷して終了する必要があり、私はそのリストをconkyにフィードしたいので
57 vava 2009-08-31
NetHogsを試してみてください
NetHogsは小さな「ネットトップ」ツールです。プロトコルごと、またはサブネットごとにトラフィックを分解する代わりに、ほとんどのツールのように、プロセスごとに帯域幅をグループ化します。NetHogsは特別なカーネルモジュールをロードする必要はありません。突然多くのネットワークトラフィックが発生した場合、NetHogsを起動してどのPIDが原因なのかをすぐに確認することができます。これは、野生になっていると突然あなたの帯域幅を取っているプログラムを特定することが容易になります
71 Milde 2009-08-31
かなりの数が記載されています こちら
しかし、私のお気に入りはiftopとtcpdumpのままです。Wiresharkも非常に良い選択肢です
6 BinaryMisfit 2009-08-31
atop
を試してみてください … それを最大限に活用するには、いくつかの追加のカーネルパッチ (I/O アカウンティングパッチ) を有効にする必要があるかもしれません
atop
がオプションでない場合は、(root として)netstat -anp --inet
を使って、どのプロセスでどの TCP/UDP ポートが使われているかのリストを提供してください (あるいは、lsof
を使うこともできます)。そこからは、開いているソケットを持つ各プロセスを繰り返し処理し、ltrace -S
またはstrace
を使ってそのソケットにアタッチして読み込み、書き込み、送信、受信を見るか、tcpdump
を使ってローカルIPアドレスとTCP/UDPポートのリストを指定してフィルタをかけてください
atop
は確かにこれらの中で最も便利です… 必要なカーネルサポートがインストールされていれば。過去に私は顧客や雇用主に、atop
を使ったI/Oプロファイリングをサポートするためだけの特別なシステムを(プロダクションイメージとは別の)セットアップしてもらったことがあります。しかし、これらの他のテクニックを使うことで、あなたはそこにたどり着くことができます
SystemTapを使っても何かできるのではないかと思うのですが・・・簡単に調理済みのレシピがあるのを知りません。SystemTapはプログラミングの解析ツールとしてはかなりのものです
5 Jim Dennis 2009-09-01