【问题标题】:Bash: Failsafe kill for process bound to IP addressesBash:绑定到 IP 地址的进程的故障安全终止
【发布时间】:2013-01-26 05:43:42
【问题描述】:

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

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

我还读到SIGKILL 让套接字打开、陈旧的内存、随机资源在使用中,所以我转向了简单的kill PID,即SIGTERM

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

【问题讨论】:

    标签: bash posix sigkill sigterm


    【解决方案1】:

    如果你 SIGKILL 所有保持监听端口打开的进程,它肯定会关闭。

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 2017-12-12
      • 2012-03-14
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多