我试图在Go中基本上这样做:
netstat -an | grep 2375 -c
我需要在回归测试中计算连接泄漏错误的Docker守护程序连接数。但是,因为我在不同操作系统(本地开发盒,CI等)的多个地方运行它,所以我不能依赖于" netstat"工具,所以我想知道如何在Go中以更加程序化的方式做到这一点?
我环顾网络包,找不到任何有用的东西。有些库基本上取代了netstat:
https://github.com/drael/GOnetstat https://github.com/dominikh/netstat-nat
但它们不符合跨平台标准(Mac和* nix)。任何想法我怎么能实现这个目标?
答案 0 :(得分:0)
在linux中,此信息在/proc
文件系统中公开。
使用os.Getpid并查询/proc/<pid>/fd
中的信息。很可能这里的简单计数很好,如果你需要更多,请参阅proc man page。
这种事物的跨平台兼容性将是你自己的,因为识别进程的开放fd的方法非常适用于每个平台。如果您只是需要编译,并在非Linux平台上为此传递一些测试,您可以使用Go's per platform支持在其他平台上使其成为无操作,或者实现适当的解决方案。