我有一个父节点进程和一个子节点进程。子级将Web服务器绑定到端口5000.父级有时会终止并重新启动子级(通常是因为文件已更改)。
问题是:当第二个子进程开始时,我得到Error: listen EADDRINUSE :::5000
。
奇怪的是,我使用child.kill()
杀死子进程,然后我等待它发起close
事件,然后我等待5秒钟{ {1}},在尝试启动一个新的子进程之前...但它始终抱怨端口被占用。但是如果我手动终止父进程(在我的终端中使用ctrl + C)并再次运行它,我就不会收到错误。因此,杀死父母似乎是成功释放端口的唯一方法。
有谁能想到这会发生的原因?为什么端口在绑定它的进程被终止之后仍然被占用,直到它的父进程停止?
答案 0 :(得分:0)
实际上它阻止了这个过程,所以你需要按照命令
来终止进程ps -ax
您将获得需要检查已被阻止的进程ID然后通过此命令终止进程的进程列表
kill -9 processId
答案 1 :(得分:0)
通过以下命令杀死所有正在运行的端口。
pkill node