【问题标题】:How to kill an open process on node.js?如何杀死 node.js 上的打开进程?
【发布时间】:2012-07-01 20:07:58
【问题描述】:

我正在尝试在 sublime 上为 Node.js 设置一个构建系统,所以我可以按 F7 在打开的文件上调用“节点”。问题是该进程将永远打开,因此,我第二次使用 F7 时,我得到了一个附加使用。

有没有办法可以从 node.js 中杀死打开的“node.exe”进程?

【问题讨论】:

标签: windows node.js windows-xp kill-process


【解决方案1】:

如果你想杀死所有进程而不是:

sudo killall -9 node

如果你想杀死选定端口上的进程:

sudo kill sudo lsof -t -i:3100 

那是端口3100

【讨论】:

    【解决方案2】:

    与@Alex W 所说的类似,只要您有进程 ID 或 PID,就可以使用以下节点函数向进程发送终止信号:

    process.kill(pid, [signal])

    在我的例子中,当我生成 child_process().spawn.pid 时,我可以随时使用 PID。我已经对其进行了测试,它确实可以在 Win 7 x64 上运行。

    【讨论】:

      【解决方案3】:

      使用以下命令集来识别在给定端口上运行的进程并从命令行终止它

         sudo fuser -v 5000/tcp // gives you the process running on port 5000
      

      它将输出类似于下图的详细信息

                              USER        PID ACCESS COMMAND
         5000/tcp:            almypal     20834 F.... node
      

      然后使用

         sudo fuser -vk 5000/tcp
      

      终止进程。再次检查使用

         sudo fuser -v 5000/tcp
      

      确保进程已终止。

      在 Windows 上,您可以使用以下步骤

        C:\> tasklist // will show the list of running process'
      
        Image Name        PID Session Name    Session#    Mem Usage
        System            4   console                 0   236 K
        ...
        node.exe         3592 console                0    8440 k
      

      记下你的节点进程对应的PID,在本例中为3592。接下来运行taskkill终止进程。

        C:\> taskkill /F /PID 3592
      

      或/IM切换

        C:\> taskkill /F /IM node.exe
      

      【讨论】:

      • 很好的答案,但是...对于 Windows?
      • 好吧,只是注意到不完全是我要求的,但是可以从 node.js 使用命令,如果你稍微改变它们(从进程 ID 到进程名称),它会按照我的要求执行,所以这是我得到的最佳答案。
      • 谢谢!这是在 cloud9 IDE 上运行以杀死 node.js 进程的唯一命令
      • 对于windows来说要简单得多,只需打开任务管理器并按名称和end task node.js进程排序
      • Windows 中的 taskkill 需要管理员权限才能运行。我们如何在 npm 脚本中做到这一点??
      【解决方案4】:

      如果你说的 sublime 是 sublimeText 插件,我也有同样的问题,然后从 python 代码向 TCP 服务器发送消息“关闭”,然后

      app.js

       TCPserver
              .on('connection', function(socket)
              {
                  socket.pipe(require('through')
                      (function(data)
                      { //----------------------------
                          if (data.toString() === 'shutdown')
                          {
                              process.exit();
                          }
                          //--------------------------
                      }));
                  socket.end();
              })
      

      【讨论】:

        【解决方案5】:

        从 Node.js 内部:

        var die = function(quitMsg)
        {
            console.error(quitMsg)
            process.exit(1);
        } 
        
        die('Process quit');
        

        有某些 methods available 用于退出,仅适用于 POSIX(即非 Windows),它们将通过进程 ID 退出进程。

        另外,请注意,您可能可以使用此方法发送 kill() 信号,但这并不是说它不适用于 Windows:

        process.kill(pid, [signal])
        

        【讨论】:

        • 但是我怎么知道其他正在运行的node.exe的pid呢?
        • @Dokkat console.log('This process is pid ' + process.pid); 将从另一个 Node.exe 打印 pid,然后您使用该进程的 pid 的命令行参数执行新的,并在新脚本中发送 SIGTERM到您在argv 中的pid。所有信息都可以在上面的链接中找到。
        • @Viclib 如果您仍然感兴趣,我实际上遇到了这个特定问题,我只需要使用process.kill(pid, [signal])。如果您愿意,我可以提供更多信息。
        • @BlazeBiker 幸运的是,在这 4 年里,我实际上设法终止了这个过程。更不用说,我相信一些未来的读者会很高兴知道你的发现作为这个问题的答案!
        • 只是为了添加更多细节,我还在下面的答案中发布了我的发现:stackoverflow.com/a/36179604/2831961
        猜你喜欢
        • 2011-06-22
        • 2011-06-11
        • 1970-01-01
        • 2015-08-30
        • 2015-04-18
        • 1970-01-01
        • 2017-07-28
        • 2016-08-22
        • 1970-01-01
        相关资源
        最近更新 更多