Как я могу отслеживать использование сетевых операций ввода-вывода для каждого процесса в Linux?

27

Такие известные инструменты, как iftop / iptraf, отображают сетевой ввод / вывод для каждого интерфейса и для каждого соединения. Есть ли способ увидеть статистику сетевого ввода-вывода для каждого процесса?

анонимное
источник
unix.stackexchange.com/questions/6908/… | superuser.com/questions/189128/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

31

Nethogs, похоже, будет делать то, что вы хотите.

РЕДАКТИРОВАТЬ: мне нужно было установить ncurses-devel, libpcap и libpcap-devel для сборки.

Мохсен
источник
@yag нет необходимости добавлять "РЕДАКТИРОВАТЬ" к сообщению. Мы уже можем видеть историю того, что изменилось.
Чепанг
@Tshepang Я просмотрел ваши изменения, я сохранил обновленную ссылку, которую вы сделали, но я сохранил текст редактирования, поскольку для меня это добавило ценность, как и ваше редактирование.
yagmoth555 - GoFundMe Monica
@ yagmoth555 Я имею в виду, зачем оставлять «РЕДАКТИРОВАТЬ» в посте? У нас есть история, чтобы показать, что было отредактировано, поэтому нет необходимости упоминать, что «текст, который следует, является редактированием».
Чепанг
@Tshepang О, проверь свои правки, тогда ты по ошибке удалил всю строку, поэтому я
перередактировал,
@ yagmoth555 это было преднамеренно, и я оставил Комментарий, который объясняет почему
tshepang
4

Чтобы узнать, какие соединения связаны с каждым процессом, используйте lsof. Например:

lsof | grep TCP

Это даст вам список соединений, например:

bash    10887 luke    3u     IPv4 44638801      0t0      TCP littleyerry.example.com:55212->barista.example.com:ldap (ESTABLISHED)
bash    10913 luke    3u     IPv4 44638905      0t0      TCP littleyerry.example.com:55216->barista.example.com:ldap (ESTABLISHED)
ssh     10935 luke    3u     IPv4 44639001      0t0      TCP littleyerry.example.com:55219->barista.example.com:ldap (ESTABLISHED)
ssh     10935 luke    4u     IPv4 44639008      0t0      TCP littleyerry.example.com:59459->launchpad.example.com:ssh (ESTABLISHED)
bash    10938 luke    3u     IPv4 44639107      0t0      TCP littleyerry.example.com:55221->barista.example.com:ldap (ESTABLISHED)

Оттуда вы сможете узнать о каждом соединении индивидуально, используя инструменты, которые вы упомянули (iftop, iptraf). Вы можете создать небольшой скрипт для агрегирования конкретных данных, которые вы ищете.

lukecyca
источник
3
lsof -niTCPэквивалентно, но намного быстрее, и lsof -niTCP -sTCP:ESTABLISHEDпоказывает текущие соединения.
мяу