节点子进程即使在被父进程杀死之后也不会释放端口

时间:2016-10-26 19:00:17

标签: node.js

我有一个父节点进程和一个子节点进程。子级将Web服务器绑定到端口5000.父级有时会终止并重新启动子级(通常是因为文件已更改)。

问题是:当第二个子进程开始时,我得到Error: listen EADDRINUSE :::5000

奇怪的是,我使用child.kill()杀死子进程,然后我等待它发起close事件,然后我等待5秒钟{ {1}},在尝试启动一个新的子进程之前...但它始终抱怨端口被占用。但是如果我手动终止父进程(在我的终端中使用ctrl + C)并再次运行它,我就不会收到错误。因此,杀死父母似乎是成功释放端口的唯一方法。

有谁能想到这会发生的原因?为什么端口在绑定它的进程被终止之后仍然被占用,直到它的进程停止?

2 个答案:

答案 0 :(得分:0)

实际上它阻止了这个过程,所以你需要按照命令

来终止进程

ps -ax

您将获得需要检查已被阻止的进程ID然后通过此命令终止进程的进程列表

kill -9 processId

答案 1 :(得分:0)

通过以下命令杀死所有正在运行的端口。

pkill node