実行中のプロセスのネットワーク帯域幅やファイルアクセスを表示するtopなどのコマンドはありますか?

実行中のプロセスのネットワーク帯域幅やファイルアクセスを表示するtopなどのコマンドはありますか?

たとえば、私たちは以下を見たいと思います。

PROCESS       IF       TX       RX       FILE(regular) R/W
prog1         eth0     200kB/s  12kB/s   --            --
              wlan0    12kB/s   100kB/s  --            --
              --       --       --       file1         R
              --       --       --       file2         R
              --       --       --       file3         W
prog2         eth0     0kB/s    200kB/s  --            --
              --       --       --       file4         W
              --       --       --       file5         W

可能ですか? nethogsはTX / RXのみを表示し、lsofはファイルアクセスのみを表示します。

現在、次の2段階のプロセスを実行しています。

sudo nethogs
sudo lsof -a -d 1-999 -c hogging_program /

もっと良い方法がありますか?

答え1

努力するiftopネットワークとpidstatの場合システム状態

どちらも選択したディストリビューションに合わせてインストールするのは簡単です(apt-getなど)。

答え2

atopファイルハンドルを介してI / Oを分離するほど具体的ではありませんが、任意の方法で必要なものを取得できます。完全なネットワーク統計を取得するには、カーネルパッチを適用する必要があります。

答え3

私が知る限り、いいえ。あなたが達成したいのは、現在やっているように複数のコマンドを組み合わせることです。私はあなたに簡単なデータを提供する他のアプリケーションを知りませんが(編集:他の答えはiftopを提案しましたが、私はそうではありません。追加されたPipepableシングル行テキスト出力モードを認識します)。巧妙なシェルスクリプト、データパイピング、およびいくつかの手動書式設定を使用すると、少なくとも必要な出力に近づくことができます。

ネットワークとファイルの統計(オペレーティングシステムの2つの異なる部分で提供されています)を表示したい検索は、「UNIX哲学」の一部のテナントに反しているようです。

  • 各プログラムに1つのことをうまく実行してください。新しいタスクを実行するには、新しい機能を追加して既存のプログラムを複雑にするのではなく、最初から再構築してください。
  • 各プログラムの出力は、他の未知のプログラムの入力になると予想される。不要な情報で出力を複雑にしないでください。

これは、テキストを出力するプログラム(たとえばlsof)で特に顕著です。通常、他のプログラムにデータをパイプするのと同じくらい多くのユーザー・インターフェースを提供する* NIXコンソール・プログラムは表示されず、次のシェル・コマンドを使用するスクリプトは表示されない場合があります。切る独自の特別にカスタマイズされた出力を作成してください。

数年後、Doug McIlroyは以前の発言を次のように要約しました。

1つのことをうまく行うプログラムを書いてください。一緒に動作するプログラムを書いてください。これは一般的なインターフェースなので、テキストストリームを処理するプログラムを作成します。

目的の形式の出力を取得するのに役立ちませんが、UNIXプログラミングの技術素晴らしい読書資料であり、この引用の出所をどこで見つけましたか?

答え4

また、考慮することができますインターネット豚これはツールというタイトルで活発に維持されているプロジェクトですnet top

関連情報