題:
我如何知道哪個應用程序正在使用網絡?
Nathaniel
2012-07-07 16:33:55 UTC
view on stackexchange narkive permalink

偶爾使用Mac時,我會發現互聯網連接速度變慢。使用活動監視器,我可以看到這是因為某些東西正在以我的連接可以支持的全速下載數據---但是我不知道如何知道是什麼原因。這可能是由幾種不同的情況造成的(Dropbox同步;一些應用程序進行了自動更新;最近一次是我忘記了的瀏覽器選項卡中的視頻緩衝),因此非常有用的方法是告訴哪個應用負責網絡使用。在OS X中有可能發生這種情況嗎?理想情況下,我正在尋找免費的解決方案。 (命令行是可以的。)如果可以,我將使用Snow Leopard。

五 答案:
mspasov
2012-07-07 17:37:22 UTC
view on stackexchange narkive permalink

防火牆

您可以使用 Little Snitch HandsOff 。它們是出色的防火牆,並且都具有“網絡監視器”功能,可以完成此任務:

Little Snitch 包括網絡監視器,顯示所有傳入的詳細信息
菜單欄中的狀態圖標提供了當前網絡活動的摘要,並在出現新的流量事件時自動彈出帶有更全面信息的監視窗口。

Hands Off 是用於監視和控制應用程序對網絡和磁盤的訪問的應用程序。能夠監視通常不會引起注意的活動,使您能夠就私人信息的傳輸做出明智的決定,從而避免了機密信息的洩露。

enter image description here enter image description here

網絡監視器包括: Little Snitch (左), HandsOff (右) sup>

Nettop

一個免費的內置cli解決方案(不幸的是,它沒有包含在Snow Leopard中)是 nettop。 nettop按程序和端口將流量分組,並測量各種網絡統計信息。

其他

幾乎沒有其他程序可以捕獲和測量流量( iftop wireshark tcpdump),但他們不知道原始pid。要建立連接,您應該使用 netstat

謝謝!我已對問題進行了編輯,以表明我在理想情況下正在尋找免費的解決方案(30歐元對於我偶爾會用的東西來說實在太多了),但是如果沒有免費的解決方案,那麼我會會接受這個答案。
對不起這是我的錯。我將嘗試找到免費的替代方法,並將更新我的答案。
哈! nettop對我來說是新手。看起來很方便。
如果可能的話,我也會接受這個答案。如果我升級到Lion,看起來nettop真的很方便。
Harald Hanche-Olsen
2012-07-07 19:31:31 UTC
view on stackexchange narkive permalink

您可以嘗試以下這種 dtrace 單行代碼:

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

讓它運行一段時間,然後按Control-C。它將打印從套接字讀取的字節數摘要,這些摘要分佈在各個進程之間。要獲取更詳細的視圖,請將 sum 替換為 quantize 。或者只是為了查看套接字讀取的次數,請用 count 替換 sum

免責聲明:我只在Lion上嘗試過此方法,但AFAIK效果不佳SL和Lion之間出現了dtrace-ability的變化。

非常感謝!簡單有效,完全滿足我的需求。在Snow Leopard上工作正常。
...儘管實際上,使用“和”數字看起來有些奇怪-Google Chrome瀏覽器通常會得到負數字(!)。但是使用量化看起來很明智。
負數,對吧?也許是溢出的情況。或者,如果您得到小的負數,請記住,如果發生錯誤,系統調用將返回-1。如果溢出,我猜測運行64位內核不會發生這種情況。
它們是中等大小的負數。這是一個典型的輸出(在Chrome中重新加載此頁面時獲取):250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSResponder 2240;但我可能只是誤解了它們-當我使用“ quanitze”時,會有一個“值”列,該列可以帶有負值,另外還有一個“計數”列。看起來sum命令報告(value)*(count)之和。負值可能意味著傳入的數據包,還是其他?
不,這全部與傳入數據有關……我猜想chrome會通過在套接字中設置較短的超時時間調用recvfrom來進行頻繁的輪詢,在這種情況下,如果沒有數據,則返回值-1。參見手冊頁獲取信息。
只是將其別名為“ netwkapps”。感謝您使我的生活更輕鬆!我正在使用它(目前)來確定是否可以安全地將計算機設置為不睡覺,然後將其關閉並回家,然後順便完成它的工作(閃存,所以不會出現高清問題:D)...不幸的是,答案是否定的。
nohillside
2012-07-07 22:21:23 UTC
view on stackexchange narkive permalink
  sudo fs_usage -f network  

將為您提供所有應用程序(和進程)的所有網絡訪問權限。通常,創建大量流量的過程是輸出中最常出現的過程。

謝謝,這真的很有用。這個問題的有用答案給我留下了深刻的印象。
Ken
2012-07-07 19:37:17 UTC
view on stackexchange narkive permalink

“ DTrace書”具有執行此操作的腳本 soconnect.d

複製“ Mac OS X”版本,將其粘貼到文本文件中,然後使用 sudo dtrace -s soconnect.d 從終端運行它。

但是,這不能使您了解進程收到的網絡通信量嗎?據我所知,它僅跟踪連接。
Lri
2013-12-13 14:43:08 UTC
view on stackexchange narkive permalink

從10.9開始,活動監視器還具有用於接收和發送字節的列:



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...