在 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