Существует ли такая команда, которая показывает пропускную способность сети и доступ к файлам запущенных процессов

Например, мы хотели бы видеть:

PROCESS IF TX RX FILE(regular) R/W prog1 eth0 200kB/s 12kB/s -- -- wlan0 12kB/s 100kB/s -- -- -- -- -- file1 R -- -- -- file2 R -- -- -- file3 W prog2 eth0 0kB/s 200kB/s -- -- -- -- -- file4 W -- -- -- file5 W 

Это возможно? nethogs показывает только TX / RX, а lsof показывает только доступ к файлам.

В настоящее время я выполняю двухэтапный процесс:

 sudo nethogs sudo lsof -a -d 1-999 -c hogging_program / 

Есть ли способ лучше?

Насколько я знаю, нет. То, что вы пытаетесь выполнить, возможно, сочетая несколько команд, как вы сейчас делаете, хотя я не знаю других приложений, которые предоставили бы вам данные для упрощения анализа (ed: другой ответ предложил iftop, который я не знал, добавил режим вывода текстовой информации в режиме одиночной линии). С некоторыми умными сценариями оболочки, данными с каналами и небольшим количеством ручного форматирования вы могли бы получить хотя бы близкий к выходу, который вы ищете.

Ваш поиск чего-то, что показывает статистику сети и файлов, которая будет предоставляться двумя различными частями операционной системы, по-видимому, противоречит некоторым арендаторам «The UNIX Philosophy:

  • Сделайте каждую программу хорошо. Чтобы выполнить новое задание, создайте обновление, а не усложняйте старые программы, добавив новые функции.
  • Ожидайте, что выход каждой программы станет входом в другую, пока неизвестную, программу. Не мешайте выводам с посторонней информацией.

Это особенно заметно в программах, которые выводят текст, например lsof. Обычно вы не видите * консольные программы NIX, предоставляющие пользовательский интерфейс, а также данные, которые должны быть переданы в другую программу, или, возможно, сценарий, использующий команды оболочки, такие как cut, чтобы создавать собственные специально настроенные выходы.

Даг Макилрой кратко изложил свое предыдущее заявление спустя годы:

Пишите программы, которые делают одно и делают это хорошо. Напишите программы для совместной работы. Пишите программы для обработки текстовых потоков, потому что это универсальный интерфейс.

Хотя это может не помочь вам получить отформатированный вывод, который вы ищете, Art of UNIX Programming является хорошим чтением и где я нашел источники для этих цитат.

Попробуйте iftop для сети и pidstat из sysstat .

Обе версии, вероятно, легко устанавливаются (apt-get и т. Д.) Для вашего выбора.

atop какой-то способ дать вам то, что вы хотите, хотя это не было бы столь же специфичным, как разрушение ввода-вывода файловым дескриптором. Чтобы получить полную сетевую статистику, вы должны применить патч ядра.

iptraf может быть очень полезен и найти полосу свиней.