Bash:对绑定到IP地址的进程进行故障保护

时间:2013-02-11 06:09:02

标签: bash posix sigkill sigterm

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

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

我还读到SIGKILL保留套接字打开,陈旧内存,随机资源正在使用中,所以我转向普通kill PID,这是一个SIGTERM

是否保证SIGTERM允许进程从地址和端口解除绑定,还是有更好的替代方法?

1 个答案:

答案 0 :(得分:1)

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

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

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