Назад | Перейти на главную страницу

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

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

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

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

Чтобы узнать, какие соединения связаны с каждым процессом, используйте 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). Вы можете создать небольшой скрипт для агрегирования конкретных данных, которые вы ищете.