Я надеялся, что появится более умный ответ.Я сделал это (программно на Python), пытаясь переписать программу под названием NetHogs.Моя версия здесь , в частности здесь представлен модуль в Python , используемый для анализа таблицы из /proc
.Если вы не Python грамотный (изучите его), взгляните на оригинальные NetHogs , в которых используется смесь C / C ++ (и немного болезненно читатьследовательно, переписать).
Стоит отметить, что обширные или быстро повторяющиеся попытки парсинга информации о сокетах из /proc
сильно нагружают ЦП, поскольку операционная система должна обрабатывать каждый сделанный системный вызов и динамически анализировать внутренние структуры.Таким образом, вы найдете некоторые кеширующие и временные предположения, сделанные в источнике обоих проектов, с которыми я вас связал.
Короче говоря, вам нужно связать иноды сокетов, данные для каждого процесса, в/proc/<pid>/fd
к соединениям, указанным в /proc/net/<proto>
.Опять же, пример разбора, и как найти все это присутствует в обоих проектах.