Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有启动后绑定到地址和端口的进程。这些进程在屏幕使用中运行,exec以便在子进程关闭时屏幕关闭。
exec
杀死进程时,我使用kill -9 PID,但有时屏幕结束,但当我重新启动进程时,旧进程仍在使用端口,我不得不再次终止进程。
kill -9 PID
我还读到了SIGKILL让套接字打开、过时的内存、正在使用的随机资源,所以我转向了 plain kill PID,它是一个SIGTERM.
SIGKILL
kill PID
SIGTERM
是否SIGTERM保证允许进程与地址和端口解除绑定,还是有更好的选择?
如果您 SIGKILL 保持侦听端口打开的所有进程,则保证关闭。
但是,它可能不会在几分钟内关闭,而它处于 TIME_WAIT 状态,这是 TCP 规范所要求的(让侦听客户端知道端口已关闭,以防他们错过原始关闭数据包)。
表现良好的服务器将使用选项 SO_REUSEADDR 打开套接字,允许它在重新启动时立即回收相同的端口,但这是特定于应用程序的。没有它,该端口将似乎使用了几分钟。