2013-02-11 58 views
0

我有启动后绑定到地址和端口的进程。这些进程在屏幕上使用exec运行,以便在子进程关闭时屏幕关闭。Bash:故障安全杀死绑定到IP地址的进程

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

我也读过SIGKILL叶插座打开,陈旧的内存,使用中的随机资源,所以我转向只是普通的kill PID,这是一个SIGTERM

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

回答

1

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

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

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