Иногда я вижу интенсивное использование сети в моем системном мониторе Gnome. Интересно, в каком процессе происходит загрузка / выгрузка данных. Есть ли какой-нибудь инструмент, который может показать мне:
Моя система - Ubuntu 10.10.
Я попытался lsof
но вывод выглядит таким НЕ дружелюбным. Может есть какие-то хитрости по его использованию? Или есть альтернативы получше?
netstat --inet -ap
покажет вам, какие процессы используют Интернет и какой хост / порт использует каждый процесс. Если вам нужны IP-адреса, а не имена хостов, используйте -n
. (--inet
показывает только интернет-розетки, -a
показывает как слушающие, так и соединительные сокеты, -p
показывает имя / идентификатор процесса). Вы, вероятно, захотите запустить его с sudo
чтобы он мог предоставить вам информацию обо всех процессах.
nethogs
покажет вам, какую полосу пропускания использует каждый процесс, но не скажет вам, к какому хосту подключается каждый процесс.
ntop немного тяжелый, но дает общее представление о сетевом трафике.
(netstat установлен по умолчанию, а nethogs и ntop доступны в репозиториях Ubuntu)
Насколько я знаю, не существует единой утилиты, которая объединяла бы 1, 2 и 3.
Nethogs может обработать ваши первые два запроса. Iftop справится с третьим. Возможно, вам потребуется нажать п в iftop, чтобы показать номер порта.
NetHogs - это небольшой инструмент для создания чистой вершины. Вместо того, чтобы разбивать трафик по протоколам или подсети, как это делают большинство инструментов, он группирует полосу пропускания по процессам. NetHogs не требует загрузки специального модуля ядра. Если внезапно появляется большой сетевой трафик, вы можете запустить NetHogs и сразу увидеть, какой PID вызывает это. Это позволяет легко идентифицировать программы, которые вышли из-под контроля и внезапно занимают вашу полосу пропускания.
iftop делает для использования сети то же, что и top (1) для использования ЦП. Он прослушивает сетевой трафик на именованном интерфейсе и отображает таблицу текущего использования полосы пропускания парами узлов.
Для использования lsof lsof -i
.
Вы также можете запросить активные соединения для каждого процесса, используя netstat -punta
запускать как root, чтобы отображать имена процессов, или без, чтобы отображать только PID. Чтобы получить динамическое представление в реальном времени, вы можете легко обмануть, используя смотреть -> watch -n1 netstat -punta
(то же самое и с iftop).
Что касается альтернатив, вы можете использовать ntop + iftop.
iftop
эквивалентно top
для процессов, которые все показывают, вы можете нажать p
для переключения на отображение порта.
Проверять, выписываться netstat -p, хотя я не знаю, найдете ли вы вывод более дружелюбным, чем lsof. Это также не соответствует вашему второму требованию.