被杀死的进程会阻塞 TCP 端口

被杀死的进程会阻塞 TCP 端口

我在几台机器上都遇到过这个问题。有什么办法可以释放这个被阻塞的端口吗?这是一个例子:

让我解释。我已经在 SUSE Linux Enterprise Server 11 SP4 上终止了一些 JAVA 进程,该进程打开了一些端口。我对 root 用户使用了命令“kill -9 ”。现在无法再次启动该进程,因为端口仍然被阻止。当端口仍然打开时应用程序就会终止。但这个过程肯定消失了!

当我使用命令(也使用 root 用户)查看时 netstat -anop | grep -E "Sta|37941" ,我将得到以下结果:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    Timer
[...]
tcp        0      0 172.21.63.27:42034      172.21.63.28:37941      ESTABLISHED -                   keepalive (2861.75/0/0)
[...]

没有显示PID!在杀死进程之前,它显示了进程的PID。有什么办法可以释放这样一个“死”的端口吗?我们总是需要重新启动操作系统才能再次启动应用程序。但这对于我们的高可用性系统来说确实非常关键……那么如果我们将来需要终止该进程该怎么办?这个问题过去也发生在其他 UNIX 操作系统上。

任何有助于将来解决此问题的帮助将不胜感激。提前非常感谢大家!

答案1

尝试查看哪个进程(包括 PID)正在使用该端口:

netstat -tupln |grep ":<Your_Port_Here>"

然后正常杀死PID(附近的进程名称)。不要使用带有任何参数的kill 命令。

kill <pid>

注意:如果从未尝试过,请不要投票否决!

相关内容