在 Linux 上,如何判断哪个进程正在发送以太网数据包?

Nor*_*sey 19 linux debian network-monitoring

我正在运行 gkrellm,它显示我的 Debian Linux 系统上的某些进程正在向 eth0 写入大约 500KB/s。我想知道它是哪个进程。我对 netstat 有一点了解,但它显示了无数打开的 TCP 连接,我似乎无法让它产生任何有关流量的信息。

有谁知道我如何获得实际使用eth0 接口的进程列表,以便我可以追踪违规者?


后续:Debian Linux 发行版包含一个nethogs明确解决此问题的软件包。相关的工具都不太上的标记包括iftopnetstat,和lsof

Jan*_*nen 19

我更喜欢nethogs。它是一个基于 ncurses 的小型控制台程序,可以方便地显示每个进程的网络流量状态。


841*_*104 18

netstat -ptu将为您提供所有 tcp 和 udp 连接的拥有进程 ID(以及标准 netstat 信息)。(普通用户将无法识别所有进程。)

如果有些东西发出恒定的流量相当数量的你应该看到它Recv-QSend-Q分别列2和3。

例子:
Recv-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k2'

Send-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k3'

如果您怀疑该进程正在被另一个进程触发ps axf


gdu*_*ham 5

如果您只是在寻找发送/接收数据的进程,则更手动的操作是运行该lsof命令。这将列出每个进程的所有打开文件,其中将包括网络连接,因为它们是操作系统的文件描述符

不确定这是否是您要找的。