Я ищу утилиту, которая могла бы показать мне, сколько пропускной способности использует каждый процесс. Он должен просто распечатать данные и выйти, так как я хочу передать этот список в conky.
3 ответа
Вы можете попробовать NetHogs.
NetHogs - это небольшой инструмент для работы с сеткой. Вместо того, чтобы разбивать трафик на протокол или подсеть, как это делают большинство инструментов, он группирует полосу пропускания по процессам. NetHogs не требует загрузки специального модуля ядра. Если вдруг появляется большой сетевой трафик, вы можете запустить NetHogs и сразу увидеть, какой PID вызывает это. Это позволяет легко идентифицировать программы, которые вышли из строя и внезапно занимают вашу пропускную способность.
Попробуйте atop
... чтобы получить максимальную отдачу от этого, вам, возможно, придется включить некоторые дополнительные исправления ядра (исправления учета ввода / вывода).
Если atop
не вариант, используйте netstat -anp --inet
(от имени root), чтобы получить список того, какие TCP/UDP-порты используются какими процессами (или, возможно, для этого используют lsof
). Оттуда просто переберите каждый процесс, у которого есть открытый сокет, и либо подключитесь к нему, используя ltrace -S
либо strace
для просмотра операций чтения, записи, отправки и получения, либо используйте tcpdump
с фильтром, указывающим ваш локальный IP-адрес (а) и порты TCP/UDP, которые были перечислены.
atop
, безусловно, самый удобный из них ... если он у вас есть и установлена необходимая поддержка ядра. В прошлом у меня были клиенты и работодатели, которые настраивали специальные системы (отличные от их производственных образов) с единственной целью поддержки профилирования ввода-вывода с использованием atop
. Однако эти другие методы доставят вас туда.
Я уверен, что мы могли бы также сделать что-то, используя SystemTap ... но я не знаю каких-либо простых заранее приготовленных рецептов для этого. SystemTap - это инструмент анализа программ.