¿Existe un comando superior que muestre los anchos de banda de la red y los accesos a archivos de los procesos en ejecución?

31

Por ejemplo, nos gustaría ver:

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

es posible? nethogs solo muestra el TX / RX, mientras que lsof solo muestra los accesos a los archivos.

Actualmente estoy haciendo un proceso de 2 pasos como este:

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

¿Hay una mejor manera?

Silvernightstar
fuente

Respuestas:

5

Que yo sepa, no. Lo que está tratando de lograr es posible combinar múltiples comandos como lo está haciendo actualmente, aunque no conozco otras aplicaciones que le brinden datos más fáciles de analizar (ed: otra respuesta sugirió iftop que no sabía que agregó un modo de salida de texto de línea única con capacidad de canalización) Con algunas secuencias de comandos de shell inteligentes, datos canalizados y un poco de formato manual, puede acercarse al menos al resultado que está buscando.

Su búsqueda de algo que muestre estadísticas de red y de archivo, que serían proporcionadas por dos partes diferentes del sistema operativo, parece estar en contra de algunos inquilinos de 'La filosofía de UNIX:'

  • Haz que cada programa haga una cosa bien. Para hacer un nuevo trabajo, cree nuevos programas en lugar de complicarlos agregando nuevas funciones.
  • Espere que la salida de cada programa se convierta en la entrada a otro programa, aún desconocido. No desordene la salida con información extraña.

Esto es particularmente evidente en programas que generan texto, como lsof. Por lo general, no ve los programas de consola * NIX que proporcionan una interfaz de usuario tanto como los datos que se canalizarán a otro programa, o posiblemente un script que utilice comandos de shell como cut para crear sus propias salidas específicamente diseñadas.

Doug McIlroy resumió su declaración anterior años después:

Escriba programas que hagan una cosa y que lo hagan bien. Escribir programas para trabajar juntos. Escriba programas para manejar secuencias de texto, porque esa es una interfaz universal.

Si bien puede que no lo ayude a obtener el resultado formateado que está buscando, The Art of UNIX Programming es una buena lectura, y donde encontré fuentes para esas citas.

sobre prescrito
fuente
77
Esto no proporciona una respuesta a la pregunta.
gato
es posible? - Creo que lo que estás tratando de lograr es probablemente mejor (y hasta donde yo sé) posible combinar múltiples comandos como lo estás haciendo actualmente. - ¿Hay una mejor manera? Creo que lo que está intentando es probablemente el mejor y solo posible convencer a múltiples comandos ... con algunos scripts de shell inteligentes y datos canalizados, podría obtener la salida [formateada de la manera] que está buscando. - ¿Qué pregunta me perdí? podría responderse mejor con una mención de los scripts de shell canalizados, pero sus comentarios útiles no mencionaron que: p es la respuesta adecuada a un script de trabajo?
sobreprescrito
Creo que lo que está tratando de lograr probablemente se describa mejor como "responder una pregunta"; No dar una conferencia a alguien sobre filosofía.
Gardner Bickford
Pondré la respuesta más clara en la parte superior. Sin embargo, sin la lección de filosofía, nadie aprende por qué la respuesta es no, y puede volver a Internet sin entender las sabias palabras de Linux Torvalds; "La filosofía de Linux es '¡Ríete ante el peligro!' Oops. Uno equivocado. "Hazlo tú mismo". Eso es."
sobreprescrito
17

Pruebe iftop para network y pidstat de sysstat .

Probablemente ambos sean una instalación fácil (apt-get, etc.) para la distribución que elija.

jelle foks
fuente
6

atopsirve para darle lo que desea, aunque no sería tan específico como desglosar E / S por filehandle. Para obtener estadísticas completas de redes, debe aplicar un parche de kernel.

Flup
fuente
2

iptraf puede ser muy útil y encontrar cerdos de ancho de banda.

NinjaTec
fuente
55
Agregar más información / explicación mejorará su respuesta.
mtk