进入 TIME_WAIT 状态后如何知道哪个进程正在使用端口?

进入 TIME_WAIT 状态后如何知道哪个进程正在使用端口?

在 Linux 上,有没有办法在进入状态之前找出哪个进程正在使用端口TIME_WAIT

当我使用时netstat -tnp我只看到两个端点,但没有过程信息。

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 127.0.0.1:38805             127.0.0.1:111               TIME_WAIT   -

答案1

不,系统只是没有跟踪这一点。

TCP查看器很清楚地显示了处于 TIME_WAIT 状态的关闭套接字被立即重新分配给进程 0(系统)。


抱歉,我误读了你的问题;上面的答案是指视窗系统。
不过,我认为在 Linux 系统上也会发生同样的事情。

答案2

就我而言,跟踪套接字打开极大地帮助我发现 TIME_WAIT 状态(因为这通常意味着我的应用程序正在重复创建套接字)

基于我如何才能识别 Linux 上哪个进程正在进行 UDP 流量?,我尝试了 auditcl。“-S socket”在我的 ubuntu 中不起作用,但下面的代码(可选添加 -F pid= pgrep -x yourApplication)可以很好地发现套接字创建

auditctl -a exit,always   -S socketcall -F uid=$USER -F a0=1 -F a3=1  -k OPEN_SOCKETS

相关内容