На Linux, как я могу сказать, какой процесс отправляет пакеты Ethernet?


18

Я использую gkrellm, который показывает, что какой-то процесс в моей системе Debian Linux записывает примерно 500 КБ / с в eth0. Я хотел бы узнать, какой это процесс. Я немного знаю о netstat, но он показывает огромное количество открытых TCP-соединений, и я не могу заставить его генерировать какую-либо информацию о трафике.

Кто-нибудь знает, как я могу получить список процессов, которые на самом деле используют интерфейс eth0, чтобы я мог отследить нарушителя?


FOLLOWUP : Дистрибутив Debian Linux содержит nethogsпакет, который решает эту проблему окончательно. Родственные инструменты, которые не совсем на марке включают iftop, netstatи lsof.


iptrafэто хорошо
— Luv33preet

У меня это работало для очень коротких обменов UDP: serverfault.com/a/683327/119360
— Люк,

Ответы:


16

Я предпочитаю nethogs . Это небольшая консольная программа на основе ncurses, которая удобно отображает состояние сетевого трафика для каждого процесса.


18

netstat -ptuпредоставит вам идентификаторы процессов (вместе со стандартной информацией netstat) для всех соединений tcp и udp. (Обычные пользователи не смогут идентифицировать все процессы.)

Если что - то рассылает сумму справедливой постоянного движения вы должны увидеть его Recv-Qили Send-Qстолбцы 2 и 3 соответственно.

Примеры:
Recv-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k2'

Send-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k3'

Если вы подозреваете, что этот процесс запускается другим процессом ps axf.


(Не обязательно указывать флаг -u, если вы знаете, что ищете TCP-соединения.)
— andol

5

Более ручная операция, если вы ищете только процесс отправки / получения данных, состояла бы в запуске lsofкоманды. Это перечислит все открытые файлы для каждого процесса, которые будут включать сетевые подключения, поскольку они являются файловыми дескрипторами для ОС.

Не уверен, что это то, что вы ищете.


4

Установить iftop(простой текстовый) или ntop(графический).


1
iftopтолько отображать использование полосы пропускания на интерфейсе.
— кванты

Это показывает гораздо больше, чем это. По умолчанию он разбивает его по хостам.
— Дэвид Шварц

Может ли он перечислить все процессы, которые используют интерфейс? Если да, не могли бы вы показать нам команду и параметры?
— кванты

1
Не напрямую. Но как только вы найдете хост, вы можете найти процесс, например, с помощью netstat -pn.
— Дэвид Шварц

3

Используйте, tcpdumpчтобы прослушать некоторые пакеты на этом интерфейсе:

# tcpdump -vv -s0 -i eth0 -c 100 -w /tmp/eth0.pcap

Скопируйте в клиент и откройте с помощью Wireshark, чтобы увидеть, что происходит.


Не самый простой способ получить простую статистику, но что-нибудь, даже немного более сложное, и Wireshark будет блестеть!
— Silverfire
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.