有没有办法找出Linux上大部分带宽使用哪个应用程序?[关闭]


56

我正在寻找一种实用程序,可以向我显示每个进程使用多少带宽。它应该只打印数据并退出,因为我想将该列表输入conky。

Answers:


71

您可以尝试NetHogs

NetHogs是一个小的“ net top”工具。没有像大多数工具一样按协议或每个子网划分流量,而是按进程对带宽进行分组。NetHogs不依赖于特殊的内核模块来加载。如果突然有大量网络流量,您可以启动NetHogs并立即查看引起此问题的PID。这样可以很容易地识别出已经变得疯狂并且突然占用您带宽的程序。

NetHogs_Screenshot


几乎正是我所需要的,但是它不起作用:(
vava

好吧,什么不起作用?有什么错误吗?根本不开始吗?控制台输出?
米尔德

它不适用于ipv6
zb'14年

您必须以root身份运行。建议使用Promiscous模式。sudo nethogs -p eth2。如果默认情况下不是eth0,则必须指定您的以太网。
Anandu M Das 2015年

@vava存储库中存在一个问题,该问题已在0.8.1中修复,但您必须从源代码进行构建(这非常容易)。看到这个帖子:askubuntu.com/questions/726601/…–
马修

6

这里列出了很多

但是,我的最爱仍然是iftoptcpdumpWireshark也是一个很好的选择。


如果不是一个人在网络上,Wireshark就会出现道德问题……除非您有一种方法使其仅能探测本地主机,否则我很感兴趣。
Gnoupi

5
如果您未启用混杂模式,则应仅捕获定向到主机的流量。
Amok,2009年

呵呵,这些实用程序中没有一个可以告诉我哪个进程使用的带宽最多,而这正是我所追求的。
vava

5

尝试atop ...以充分利用它,您可能必须启用一些其他内核补丁(I / O记帐补丁)。

如果atop不是一个选项,则使用netstat -anp --inet(作为根用户)提供哪些进程正在使用(或可能lsof用于该进程)的TCP / UDP端口的列表。从那里简单地遍历具有打开的套接字的每个进程,并使用ltrace -Sstrace查看其读,写,发送和接收,或者使用tcpdump指定您的本地IP地址和TCP / UDP端口的过滤器进行连接,被列出。

atop如果您已经安装了必要的内核支持,那么肯定是其中最方便的选择。过去,我曾经让客户和雇主建立特殊的系统(不同于他们的生产映像),其唯一目的是使用来支持I / O分析atop。但是,这些其他技术将使您到达那里。

我敢肯定我们也可以使用SystemTap来做某事...但是我不知道有任何简单的预煮食谱可以做到这一点。SystemTap非常是一种编程分析工具。


如果您只想知道哪个进程正在占用网络,而不是实际使用的带宽,则可以使用netstat -anp --inet,然后检查Recv-QSend-Q
golimar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.