ネットワークを使用しているアプリケーションを確認するにはどうすればよいですか?


9

Macを使用しているときに、インターネット接続の速度が低下していることに気付くことがあります。アクティビティモニターを使用すると、接続がサポートできるフルレートで何かがデータをダウンロードしていることが原因であることがわかります。これはいくつかの異なる原因で発生する可能性があります(Dropboxの同期、一部のアプリが自動更新を実行している、最近ではブラウザのタブでのビデオバッファリングでしたが、忘れていました)。そのため、ネットワークの使用に責任があるアプリ。OS Xではそのようなことは可能ですか?理想的には、無料のソリューションを探しています。(コマンドラインはOKです。)違いがあるなら、私はSnow Leopardを使用しています。

回答:


6

あなたはこのdtraceワンライナーを試すことができます:

sudo dtrace -n 'syscall::recvfrom:return { @[pid,execname] = sum(arg0); }'

しばらく実行してから、Control-Cを押します。プロセス間で分散された、ソケットから読み取られたバイト数の概要を出力します。より詳細なビューについては、に置き換えsumてくださいquantize。それともソケットのカウントが読み込みを確認し、交換するsumことでcount

免責事項:私はこれをLionで試しただけですが、AFAIKはSLとLionの間でdtrace-abilityに大きな変化はありませんでした。


1
どうもありがとう!シンプルで効果的で、まさに私が必要とすることを行います。Snow Leopardでは問題なく動作します。
ナサニエル

...実際には、「合計」を使用すると、数値は少し奇妙に見えます-通常、Google Chromeは負の数値(!)を取得します。しかし、クオンタイズを使用すると、それらは賢明に見えます。
ナサニエル

負の数だよね?オーバーフローの可能性があります。または、小さな負の数値を取得した場合、エラーが発生した場合、システムコールは-1を返すことに注意してください。オーバーフローする場合、64ビットカーネルを実行するとオーバーフローしないと思います。
Harald Hanche-Olsen

それらは中規模の負の数です。これが典型的な出力です(Chromeでこのページを再ロードしているときに取得されます):250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSResponder 2240; しかし、私はそれらを誤って解釈しているだけかもしれません-「quanitze」を使用すると、負の値を持つことができる「値」列と「カウント」列があります。sumコマンドは(値)*(カウント)の合計を報告するように見えます。負の値は着信パケットを意味するのでしょうか?
ナサニエル

いいえ、これはすべて着信データに関するものです。Chromeはソケットに短いタイムアウトを設定してrecvfromを呼び出すことにより頻繁にポーリングを行うと思います。この場合、データがない場合は戻り値-1が返されます。recvfromのマニュアルページを参照してください。
Harald Hanche-Olsen 2012

6

ファイアウォール

Little SnitchまたはHandsOffを使用できます。これらは優れたファイアウォールであり、どちらも「ネットワークモニター」機能を備えています。

Little Snitchにはネットワークモニターが含まれており、すべての着信および発信ネットワークトラフィックの詳細情報を表示します。
メニューバーのステータスアイコンは、現在のネットワークアクティビティの概要を提供し、新しいトラフィックイベントが発生した場合は、より包括的な情報を備えたモニターウィンドウが自動的にポップアップ表示されます。

Hands Offは、ネットワークとディスクへのアプリケーションのアクセスを監視および制御するアプリケーションです。通常は気づかない活動を監視できるため、個人情報の転送に関する情報に基づいた決定を行うことができ、機密情報の漏洩を回避できます。

ここに画像の説明を入力してください ここに画像の説明を入力してください

ネットワークモニター:Little Snitch(左)、HandsOff(右)

ネットトップ

無料の組み込みcliソリューション(残念ながらSnow Leopardには含まれていません)はnettopです。nettopは、プログラムおよびポートごとにトラフィックをグループ化し、さまざまなネットワーク統計を測定します。

その他の

トラフィックをキャプチャして測定する他のプログラム(iftopwiresharktcpdump)はほとんどありませんが、元のpid はわかりません。接続するには、netstatを使用する必要があります。


ありがとう!質問を編集して、無料のソリューションを理想的に探していることを示しました(たまにしか使用しないものには30ユーロは多すぎます)が、それを行うための無料の方法がない場合は、この答えを受け入れます。
ナサニエル

すみません。私は無料の代替案を見つけようとし、私の答えを更新します。
mspasov 2012

ハ!nettop私にとっては初めてでした。重宝します。
Harald Hanche-Olsen 2012

可能であればこの答えも受け入れます。Lionにアップグレードすると、ネットトップが非常に便利になるようです。
ナサニエル

4
sudo fs_usage -f network

すべてのアプリケーション(およびプロセス)によるすべてのネットワークアクセスを提供します。通常、大量のトラフィックを作成するプロセスは、出力に最も頻繁に表示されるプロセスです。


1
ありがとう、これは本当に便利です。この質問に対する役立つ回答の数に感銘を受けました。
ナサニエル

1

「DTraceブック」には、これを行うスクリプトsoconnect.dがあります。

「Mac OS X」バージョンをコピーしてテキストファイルに貼り付け、ターミナルからを使用して実行しsudo dtrace -s soconnect.dます。


しかし、それではプロセスが受信するネットワークトラフィックの量がわかりません。私が知る限り、それは接続を追跡するだけです。
Harald Hanche-Olsen 2012

1

アクティビティモニターには、10.9以降、受信バイトと送信バイトの列もあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.