我正在运行gkrellm,它显示我的Debian Linux系统上的一些进程正在向eth0写入大约500KB / s。 我想找出它是哪个过程。 我对netstat有一点了解,但是它显示了一个巨大的TCP连接,我似乎无法让它产生任何关于stream量的信息。
有谁知道我怎样才能得到一个实际使用 eth0接口的进程列表,以便我可以追查到罪犯?
后续工作 :Debian Linux发行版包含一个nethogs包,可以明确地解决这个问题。 相关的工具,如iftop , netstat和lsof ,都不是很清楚。
我更喜欢nethogs 。 这是一个小型的基于ncurses的控制台程序,以方便的方式显示每个进程的networkingstream量状态。
netstat -ptu将为您提供所有tcp和udp连接的拥有进程ID(以及标准的netstat信息)。 (普通用户将无法识别所有进程。)
如果有什么东西在发送相当数量的固定stream量,您应该分别在Recv-Q或Send-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触发。
如果您只是在寻找一个发送/接收数据的进程,那么更手动的操作就是运行lsof命令。 这将列出每个进程的所有打开文件,这些进程将包括networking连接,因为它们是文件描述符到操作系统
不知道这是你在找什么。
安装iftop (简单文本)或ntop (graphics)。
使用tcpdump在这个接口上嗅探一些数据包:
# tcpdump -vv -s0 -i eth0 -c 100 -w /tmp/eth0.pcap
复制到客户端,并用Wireshark打开,看看会发生什么。