如何终止进程并确保清除端口绑定?

如何终止进程并确保清除端口绑定?

我遇到过这样的情况:我终止了一个进程,但重新启动它时,出现错误Address already in use

我正在运行sudo netstat -lntp以获取进程 ID,它会返回,例如:

tcp        0      0 0.0.0.0:8002            0.0.0.0:*               LISTEN       475/valhalla_servic

然后我跑sudo kill -9 475

运行此命令后,netstat不再显示该进程,但是当我尝试重新启动时,我收到“地址已在使用”错误,我不确定我做错了什么?

答案1

我不确定我做错了什么?

好消息:没什么。

TCP 状态机有超时条件。因此,默认情况下,端口会停留一段时间。

作为某些软件的用户,您对此无能为力 - 不让任意软件立即重新绑定端口最终也是一项安全功能。

作为软件的开发人员,您可以设置SO_LINGER为 0。在大多数情况下,这不是正确的做法——尤其是当您确实终止了拥有进程时。

相关内容