Есть ли способ узнать, какое приложение использует большую часть полосы пропускания в Linux? [закрыто]


56

Я ищу утилиту, которая могла бы показать мне, сколько пропускной способности использует каждый процесс. Он должен просто распечатать данные и выйти, так как я хочу передать этот список в conky.

Ответы:


71

Вы можете попробовать NetHogs .

NetHogs - это небольшой инструмент для работы с сеткой. Вместо того, чтобы разбивать трафик на протокол или подсеть, как это делают большинство инструментов, он группирует пропускную способность по процессам . NetHogs не требует загрузки специального модуля ядра. Если внезапно появляется большой сетевой трафик, вы можете запустить NetHogs и сразу увидеть, какой PID вызывает это. Это позволяет легко идентифицировать программы, которые вышли из строя и внезапно занимают вашу пропускную способность.

NetHogs_Screenshot


Почти то, что мне нужно, но это просто не работает :(
— vava

Ну, что не работает? Есть ошибки? Разве это не начинается вообще? Консольный вывод?
— Милде

он не работает с ipv6
— zb '29

Вы должны запустить его как root. Рекомендуется смешной режим. sudo nethogs -p eth2, Вы должны указать свой Ethernet, если это не eth0 по умолчанию.
— Ананду М Дас

@vava Есть проблема с репозиторием, она исправлена ​​в 0.8.1, но вы должны собрать ее из исходного кода (что очень легко). Смотрите этот пост: askubuntu.com/questions/726601/…
— Матфея

6

Существует немало перечисленных здесь .

Мои любимые, однако, остаются iftop и tcpdump . Wireshark также очень хороший вариант.


У меня есть этические проблемы с Wireshark, если не один в сети ... Если у вас нет способа заставить его проверять только локальный хост, в этом случае я заинтересован.
— Gnoupi

5
Если вы не включите случайный режим, он должен захватывать только трафик, направленный на ваш хост.
— Amok

Да, ни одна из этих утилит не может сказать мне, какой процесс использует большую часть полосы пропускания, и это то, что мне нужно.
— Вава

5

Попробуйте atop ... чтобы получить максимальную отдачу от этого, вам, возможно, придется включить некоторые дополнительные исправления ядра (исправления учета ввода / вывода).

Если atopэто не вариант, используйте netstat -anp --inet(от имени root), чтобы получить список того, какие порты TCP / UDP используются какими процессами (или, возможно, использовать lsofдля этого). Оттуда просто переберите каждый процесс, у которого есть открытый сокет, и либо подключитесь к нему, используя ltrace -Sили straceдля просмотра операций чтения, записи, отправки и получения, либо используйте tcpdumpс фильтром, указывающим ваш локальный IP-адрес (а) и порты TCP / UDP. которые были перечислены.

atopбезусловно, самый удобный из них ... если он у вас есть и установлена ​​необходимая поддержка ядра. В прошлом у меня были клиенты и работодатели, которые настраивали специальные системы (отличные от их производственных образов) с единственной целью поддержки использования профилирования ввода / вывода atop. Однако эти другие методы доставят вас туда.

Я уверен, что мы могли бы также сделать что-то, используя SystemTap ... но я не знаю каких-либо простых заранее приготовленных рецептов для этого. SystemTap - это инструмент анализа программ.


если вы просто хотите знать , какой процесс коробления сети, а не реальная пропускная способность используется, вы можете просто использовать netstat -anp --inet, и проверить Recv-Qи Send-Qстолбцы
— golimar
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.