0

我有启动后绑定到地址和端口的进程。这些进程在屏幕使用中运行,exec以便在子进程关闭时屏幕关闭。

杀死进程时,我使用kill -9 PID,但有时屏幕结束,但当我重新启动进程时,旧进程仍在使用端口,我不得不再次终止进程。

我还读到了SIGKILL让套接字打开、过时的内存、正在使用的随机资源,所以我转向了 plain kill PID,它是一个SIGTERM.

是否SIGTERM保证允许进程与地址和端口解除绑定,还是有更好的选择?

4

1 回答 1

1

如果您 SIGKILL 保持侦听端口打开的所有进程,则保证关闭。

但是,它可能不会在几分钟内关闭,而它处于 TIME_WAIT 状态,这是 TCP 规范所要求的(让侦听客户端知道端口已关闭,以防他们错过原始关闭数据包)。

表现良好的服务器将使用选项 SO_REUSEADDR 打开套接字,允许它在重新启动时立即回收相同的端口,但这是特定于应用程序的。没有它,该端口将似乎使用了几分钟。

于 2013-02-11T06:29:35.323 回答