Як я можу визначити, який додаток використовує мережу?


9

Дуже періодично під час використання свого Mac я помічаю, що моє інтернет-з'єднання сповільнюється. Використовуючи Монітор активності, я бачу, що це тому, що щось завантажує дані на повній швидкості, яку моє з'єднання може підтримувати --- але я не знаю, як сказати, що за це відповідає. Це може бути викликано декількома різними речами (синхронізація Dropbox; деякий додаток робить автоматичне оновлення; останнім часом це забудоване відео на вкладці браузера, про яке я забув), тож було б дуже зручно мати спосіб розповісти. який додаток відповідає за використання мережі. Чи таке можливо в OS X? В ідеалі я шукаю безкоштовне рішення. (Командний рядок у порядку.) Я на Snow Leopard, якщо це має значення.

Відповіді:


6

Ви можете спробувати цей dtraceоднопластовий:

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

Дайте йому деякий час працювати, а потім натисніть Control-C. Він надрукує підсумок кількості байтів, прочитаних з сокетів, розподілених між процесами. Для більш детального перегляду замініть sumна quantize. Або просто побачити кількість прочитаних сокетів, замінити sumна count.

Відмова: Я спробував це лише на Lion, але AFAIK не змінилося у dtrace-здатності між SL та Lion.


1
Дуже дякую! Простий і ефективний і робить саме те, що мені потрібно. Працює чудово на Snow Leopard.
Натаніел

... хоча насправді цифри "сума" виглядають дещо дивно - Google Chrome зазвичай отримує від'ємне число (!). Але за допомогою квантування вони виглядають розумними.
Натаніел

Негативні цифри, так? Можливо, це випадок переповнення. Або якщо ви отримуєте невеликі від’ємні числа, пам’ятайте, що системні дзвінки повертаються -1, якщо сталася помилка. Якщо це переповнення, я гадаю, що це не відбудеться під час запуску 64-бітного ядра.
Харальд Ханш-Олсен

Вони є середніми негативними цифрами. Ось типовий вихід (зроблений під час повторного завантаження цієї сторінки в Chrome): 250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSResponder 2240; але я можу просто неправильно їх тлумачити - коли я використовую "quanitze", стовпець "значення", який може мати негативні значення, і стовпчик "count". Схоже, команда sum повідомляє про суму (значення) * (count). Може негативні значення означають вхідні пакети, чи щось?
Натаніел

Ні, це все стосується вхідних даних ... Я думаю, що хром проводить часті опитування, викликаючи recvfrom з коротким тайм-аутом, встановленим у сокеті, і в цьому випадку повернення значення -1 призводить до відсутності даних. Див. Сторінку керівництва для recvfrom.
Харальд Ханш-Ольсен

6

Брандмауери

Ви можете використовувати Little Snitch або HandsOff . Вони чудові брандмауери, і обидва мають функцію "Мережевий монітор", яка зробить цю роботу:

Little Snitch включає мережевий монітор, який показує детальну інформацію про весь вхідний та вихідний мережевий трафік.
Піктограма статусу на панелі меню містить підсумок поточної активності в мережі, а вікно монітора з більш вичерпною інформацією автоматично з’являється у випадку нових подій у трафіку.

Hands Off - це програма для контролю та контролю доступу програм до вашої мережі та дисків. Можливість відстежувати звичайно непомітну діяльність дозволяє вам приймати обгрунтовані рішення щодо передачі вашої приватної інформації, отже уникаючи витоку конфіденційної інформації.

введіть тут опис зображення введіть тут опис зображення

Мережеві монітори: Little Snitch (зліва), HandsOff (справа)

Неттоп

Безкоштовне і вбудоване рішення для кліпів (на жаль, воно не входить у Snow Leopard) було б неттопом . nettop групує трафік за програмою та портом і вимірює різні статистичні дані мережі.

Інший

Існує небагато інших програм, які фіксують і вимірюють трафік ( iftop , wireshark , tcpdump ), але вони не знають джерела, що виник. Для встановлення з'єднання слід скористатися netstat .


Дякую! Я відредагував питання, щоб вказати, що в ідеалі шукаю безкоштовне рішення (30 євро - це занадто багато для чогось, що я б використовував лише дуже періодично), але якщо немає вільного способу це зробити, то я ' я прийму цю відповідь.
Натаніел

Вибач, моя погана. Я спробую знайти безкоштовну альтернативу і оновлю свою відповідь.
mspasov

Га! nettopбуло для мене новим. Виглядає зручно.
Харальд Ханш-Олсен

Я б також прийняв цю відповідь, якби це було можливо. Якщо я перейду до Лева, схоже, що неттоп буде дуже зручним.
Натаніел

4
sudo fs_usage -f network

надасть вам всі доступ до мережі всіма програмами (і процесами). Зазвичай процес, що створює багато трафіку, є тим, який з’являється найчастіше у висновку.


1
Дякую, це дійсно корисно. Мене вражає кількість корисних відповідей на це питання.
Натаніел

1

У "DTrace book" є сценарій soconnect.d , який робить це.

Скопіюйте версію "Mac OS X", вставте її в текстовий файл, після чого запустіть її з терміналу sudo dtrace -s soconnect.d.


Але це не дає вам уявлення про кількість мережевого трафіку, який отримує процес, чи не так? Наскільки я можу сказати, він відстежує лише з'єднання.
Харальд Ханш-Олсен

1

У "Моніторі активності" також були стовпці для отриманих та відправлених байтів з 10.9:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.