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

56

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

Вава
источник

Ответы:

71

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

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

NetHogs_Screenshot

Milde
источник
Почти то, что мне нужно, но это просто не работает :(
vava
Ну, что не работает? Есть ошибки? Разве это не начинается вообще? Консольный вывод?
Милде
он не работает с ipv6
zb '29
Вы должны запустить его как root. Рекомендуется смешной режим. sudo nethogs -p eth2, Вы должны указать свой Ethernet, если это не eth0 по умолчанию.
Ананду М Дас
@vava Есть проблема с репозиторием, она исправлена ​​в 0.8.1, но вы должны собрать ее из исходного кода (что очень легко). Смотрите этот пост: askubuntu.com/questions/726601/…
Матфея
6

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

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

BinaryMisfit
источник
У меня есть этические проблемы с 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