我可以看到我的服务器发送了大量流量.如果我去netstat -apln | grep httpd我可以看到所有流量都转到一个IP.
有没有办法可以看到用于将数据发送到该IP的脚本/文件?或者一般的IP?
我知道tcpdump可以查看数据包,但似乎无法做到这一点.
解决方法
netstat命令只能告诉您当前哪些连接是打开的,而不是每个连接发送和接收的流量.要找出哪些连接正在传输大部分数据,您需要使用其他工具,例如iftop或tcpdump.
您接下来要做的事情很大程度上取决于每个连接的生命周期以及哪个端点建立了连接.如果您的结束是服务器,那么您应该能够识别属于服务器进程的侦听套接字.
如果它确实是一个httpd进程(正如您在问题中暗示的那样),那么您的Web服务器访问日志就是您要查看的地方.需要注意的一点是,只有在完成该请求的传输后才会记录每个请求.如果您正在提供大小为MB的文件,这可能会产生显着差异.
如果您的结束恰好是客户端,那么您将看不到侦听套接字,但是如果连接很长时间,您可以在确认哪个连接消耗带宽后使用netstat找到连接和相应的进程.
如果上述调查导致您发现大多数流量发生在从您的终端建立的短期连接上,那么netstat不足以确定哪个流程负责.该特定情况已在an older question中介绍.