23

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

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

4

5 回答 5

45

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

   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
于 2012-06-30T18:03:43.310 回答
3

从 Node.js 内部:

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

die('Process quit');

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

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

process.kill(pid, [signal])
于 2012-06-30T18:19:57.850 回答
3

如果你想杀死所有进程:

sudo killall -9 node

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

sudo kill sudo lsof -t -i:3100 

那是港口3100

于 2019-04-03T09:51:58.300 回答
0

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

应用程序.js

 TCPserver
        .on('connection', function(socket)
        {
            socket.pipe(require('through')
                (function(data)
                { //----------------------------
                    if (data.toString() === 'shutdown')
                    {
                        process.exit();
                    }
                    //--------------------------
                }));
            socket.end();
        })
于 2013-08-08T07:16:50.797 回答
0

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

process.kill(pid, [signal])

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

于 2016-03-23T13:30:58.313 回答