Інструмент Linux для моніторингу споживання пропускної здатності певного процесу (PID)

Is there tool or a command that helps capture the bandwidth consumption of specific process (PID), just like the System Monitor does, but for a single specific process, as shows the following screenshot enter image description here

Я буду щасливий з інструментом командного рядка, який принаймні експортує таку історію до файлів. (Я на Ubuntu 16.04)

Оновлення 1

Я хотів би мати принаймні такий інструмент, як Nethogs , який може виводитись у файли (Nethogs фіксує лише з'єднання TCP), подібний інструмент, який націлює як TCP, так і UDP були б чудовими

Оновлення 2

Будь-який сценарій, комбінація інших інструментів (наприклад, wireshark) також допоможе.

7
додано Автор Cai, джерело

5 Відповіді

Ви дивилися на інструмент на вершині? Відповідно до сторінки користувача:

"Навантаження мережі відображається в кожному процесі, якщо встановлено модуль ядра` netatop ".

2
додано

Тому, оскільки я не знайшов жодного легкого/зрозумілого/"удару по землі" рішення, я повинен був зробити скромний, виправлення, рефакторинг і більше варіантів.

-> https://github.com/AymenDaoudi/NeTraf

1
додано

Є два мережі мережевого моніторингу рішення, доступні, які я знаю. Необхідно мати можливість витягувати з них певні дані PID.

0
додано

Нетаги можуть бути тим, що ви хочете.

debian/ubuntu/etc

apt-get install nethogs

або rhel/cent/тощо

yum install nethogs

Ви запускаєте його на мережевому інтерфейсі, наприклад,

nethogs eth0

Тим не менш, його вихід є пропускною здатністю на процес, відправлений і отриманий. Можна також контролювати кілька інтерфейсів.

ОПИС        NetHogs - невеликий інструмент "чистий топ". Замість того, щоб розбивати трафік вниз        за протокол або підмережу, як і більшість таких інструментів, він групує        width by process - і не спирається на спеціальний модуль ядра        завантажено. Отже, якщо раптом багато мережевого трафіку, ви можете стріляти        до NetHogs і відразу побачити, який PID викликає це, і якщо це        якийсь процес прядіння, вбийте його.

UPDATE: OP asked for output to file. You can do it with nethogs:

nethogs -d 1 eth0 > output.txt

-d вказує часовий інтервал між записами ..., щоб ви могли виконати вказану вище команду і отримати бажаний результат.

UPDATE2 OP says TCP and UDP is a requirement. Then attempt to use jnettop. A bit older, but does TCP and UDP. It is available in deb/ubuntu and I think RHEL derivatives. example:

jnettop --display text -t 5 --format CSV

Це має бути доступним для файлу.

0
додано
Ви чітко заявили, що "TCP і UDP були б великими". Вибачте за мій неправильний переклад. Я оновлю відповідь.
додано Автор Kaz Wolfe, джерело
Я чітко вказую на питання, що Nethogs підтримує тільки TCP-з'єднання, і я прагну зробити профілі для програми, яка використовує TCP і UDP
додано Автор AymenDaoudi, джерело
@ number9 jnettop, здається, цікаво, як ніколи виведення в файл не продовжується, чи є спосіб увійти в дані безперервно, поки я використовую моє профільоване додаток, так само, як дані відображаються на екрані?
додано Автор AymenDaoudi, джерело
@ number9 Команда jnettop також не показує PID
додано Автор AymenDaoudi, джерело

Як щодо використання iftop , щоб проаналізувати обсяг трафіку на певних портах, а потім за допомогою lsof визначити, який процес використовує який порт?

0
додано
може iftop повідомити про КБ/с для UPs і Downs, чи може він виводити його у зовнішній файл?
додано Автор AymenDaoudi, джерело