
たとえば、私たちは以下を見たいと思います。
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
答え2
atop
ファイルハンドルを介してI / Oを分離するほど具体的ではありませんが、任意の方法で必要なものを取得できます。完全なネットワーク統計を取得するには、カーネルパッチを適用する必要があります。
答え3
私が知る限り、いいえ。あなたが達成したいのは、現在やっているように複数のコマンドを組み合わせることです。私はあなたに簡単なデータを提供する他のアプリケーションを知りませんが(編集:他の答えはiftopを提案しましたが、私はそうではありません。追加されたPipepableシングル行テキスト出力モードを認識します)。巧妙なシェルスクリプト、データパイピング、およびいくつかの手動書式設定を使用すると、少なくとも必要な出力に近づくことができます。
ネットワークとファイルの統計(オペレーティングシステムの2つの異なる部分で提供されています)を表示したい検索は、「UNIX哲学」の一部のテナントに反しているようです。
- 各プログラムに1つのことをうまく実行してください。新しいタスクを実行するには、新しい機能を追加して既存のプログラムを複雑にするのではなく、最初から再構築してください。
- 各プログラムの出力は、他の未知のプログラムの入力になると予想される。不要な情報で出力を複雑にしないでください。
これは、テキストを出力するプログラム(たとえばlsof)で特に顕著です。通常、他のプログラムにデータをパイプするのと同じくらい多くのユーザー・インターフェースを提供する* NIXコンソール・プログラムは表示されず、次のシェル・コマンドを使用するスクリプトは表示されない場合があります。切る独自の特別にカスタマイズされた出力を作成してください。
数年後、Doug McIlroyは以前の発言を次のように要約しました。
1つのことをうまく行うプログラムを書いてください。一緒に動作するプログラムを書いてください。これは一般的なインターフェースなので、テキストストリームを処理するプログラムを作成します。
目的の形式の出力を取得するのに役立ちませんが、UNIXプログラミングの技術素晴らしい読書資料であり、この引用の出所をどこで見つけましたか?
答え4
また、考慮することができますインターネット豚これはツールというタイトルで活発に維持されているプロジェクトですnet top
。