我有一台服务器,我可以使用 lsof 查找特定端口上通过服务器的流量量吗?到目前为止,我使用它来按最大大小排序,但我真正得到了什么信息?我如何才能使用 lsof(如果可能)知道在 1 小时或 1 分钟内与其他服务器传输了多少字节?
谢谢
lsof | sed 's/0t//' | grep | awk '{print $7,$9}' | sort -nr | head -10
我用这个来获取我的端口的前 10 个 lsof,大小列是 $7 $9 给我另一方服务器名称和端口...(PS 我使用的是 solaris)
答案1
如果您想了解一段时间内的吞吐量,我会以非混杂模式捕获数据包头(不是整个数据包,需要大量空间)并将其保存到一个文件中。这可以使用 tcpdump 或 tshark(wireshark 的一部分)来完成。然后,您可以使用 wireshark 加载捕获的数据,并使用过滤器找到一段时间内服务/端口的吞吐量。我相信您也可以在命令行上使用 tshark 进行一些分析,这可能有助于编写脚本。
eth0 上的基本捕获:
tcpdump -p -i eth0 -w capture.pcap
另一个选择是 ntop,因为它可以在 Web 界面上为您完成很多工作,但我不记得您能从中获得多少细节。