¿Hay alguna manera de averiguar qué aplicación utiliza la mayor parte del ancho de banda en Linux? [cerrado]

56

Estoy buscando una utilidad que me muestre cuánto ancho de banda utiliza cada proceso. Debería imprimir los datos y salir ya que quiero alimentar esa lista en conky.

vava
fuente

Respuestas:

71

Puedes probar NetHogs .

NetHogs es una pequeña herramienta 'net top'. En lugar de desglosar el tráfico por protocolo o subred, como la mayoría de las herramientas, agrupa el ancho de banda por proceso . NetHogs no se basa en un módulo especial del núcleo para cargarse. Si de repente hay mucho tráfico de red, puede iniciar NetHogs e inmediatamente ver qué PID está causando esto. Esto facilita la identificación de programas que se han vuelto locos y de repente están ocupando su ancho de banda.

NetHogs_Screenshot

Milde
fuente
Casi exactamente lo que necesito pero simplemente no funciona :(
vava
Bueno, que no funciona? Cualquier error? ¿No comienza en absoluto? Salida de la consola?
Milde
no funciona con ipv6
zb '29 de
Tienes que ejecutarlo como root. Se recomienda el modo promisorio. sudo nethogs -p eth2. Debe especificar su ethernet si no es eth0 por defecto.
Anandu M Das
@vava Hay un problema con el que está en el repositorio, está solucionado en 0.8.1 pero tienes que compilar desde la fuente (lo cual es extremadamente fácil). Ver esta publicación: askubuntu.com/questions/726601/…
Matthew
6

Hay bastantes enumerados aquí .

Sin embargo, mis favoritos siguen siendo iftop y tcpdump . Wireshark también es una muy buena opción.

BinaryMisfit
fuente
Tengo problemas éticos con Wireshark, si no solo en la red ... A menos que tenga una manera de hacer que solo explore el host local, en cuyo caso estoy interesado.
Gnoupi
55
Si no habilita el modo promiscuo, solo debe capturar el tráfico dirigido a su host.
Amok
Huh, ninguna de esas utilidades me puede decir qué proceso está usando la mayor parte del ancho de banda y eso es lo que busco.
vava
5

Intente atop ... para aprovecharlo al máximo, es posible que deba habilitar algunos parches de kernel adicionales (parches de contabilidad de E / S).

Si atopno es una opción, use netstat -anp --inet(como root) para proporcionar una lista de qué puertos TCP / UDP están en uso por qué procesos (o posiblemente use lsofpara eso). A partir de ahí, simplemente repita cada proceso que tenga un socket abierto y adjúntelo usando ltrace -So stracepara ver las lecturas, escrituras, envíos y recibos, o use tcpdumpun filtro que especifique su (s) dirección (es) IP local y los puertos TCP / UDP que estaban en la lista

atopes sin duda el más conveniente de estos ... si lo tiene y tiene instalado el soporte de kernel necesario. En el pasado he tenido clientes y los empleadores establecer sistemas especiales (diferentes de las imágenes de producción) con el único propósito de apoyar de E / S utilizando perfiles atop. Sin embargo, estas otras técnicas lo llevarán allí.

Estoy seguro de que también podríamos hacer algo usando SystemTap ... pero no conozco ninguna receta precocida fácil para hacerlo. SystemTap es en gran medida una herramienta de análisis de programación.

Jim Dennis
fuente
si solo desea saber qué proceso está acaparando la red, no el ancho de banda real utilizado, puede usarlo netstat -anp --inety verificar las columnas Recv-QySend-Q
golimar