【问题标题】:Node child process doesn't release port, even after it's killed by parent节点子进程不会释放端口,即使它被父进程杀死
【发布时间】:2019-01-29 18:15:17
【问题描述】:

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

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

奇怪的是,我用child.kill() 杀死了子进程,然后我等待它触发close 事件,然后然后我用setTimeout 等待5 秒,然后试图启动一个新的子进程......但它总是抱怨端口被占用。但是,如果我手动终止父进程(终端中的 ctrl+C)并再次运行它,我不会收到错误消息。所以杀死父级似乎是成功释放端口的唯一方法。

谁能想到会发生这种情况的原因?为什么绑定它的进程被杀死后,端口一直被占用,直到它的进程停止?

【问题讨论】:

  • 有趣,您是否使用forever 之类的东西来运行父级?
  • 请提供更多信息,代码。你如何开始流程

标签: node.js


【解决方案1】:

实际上它阻塞了进程,所以你需要通过以下命令杀死进程,只需键入

ps -ax

您将获得进程列表,您需要从中检查被阻止的进程 ID,然后通过此命令杀死该进程

kill -9 processId

【讨论】:

    【解决方案2】:

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

    pkill node

    【讨论】:

      猜你喜欢
      • 2012-03-07
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多