我正在尝试在 sublime 上为 Node.js 设置一个构建系统,所以我可以按 F7 在打开的文件上调用“节点”。问题是该进程将永远打开,因此,我第二次使用 F7 时,我得到了一个附加使用。
有没有办法可以从 node.js 中杀死打开的“node.exe”进程?
我正在尝试在 sublime 上为 Node.js 设置一个构建系统,所以我可以按 F7 在打开的文件上调用“节点”。问题是该进程将永远打开,因此,我第二次使用 F7 时,我得到了一个附加使用。
有没有办法可以从 node.js 中杀死打开的“node.exe”进程?
使用以下命令集来识别在给定端口上运行的进程并从命令行终止它
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
从 Node.js 内部:
var die = function(quitMsg)
{
console.error(quitMsg)
process.exit(1);
}
die('Process quit');
有某些方法可用于退出,这些方法仅适用于 POSIX(即非 Windows),它们将通过进程 ID 退出进程。
另外,请注意,您可能可以使用此方法发送 kill() 信号,但这并不是说它不适用于 Windows:
process.kill(pid, [signal])
如果你想杀死所有进程:
sudo killall -9 node
如果你想杀死选定端口上的进程:
sudo kill sudo lsof -t -i:3100
那是港口3100
如果你说的 sublime 是 sublimeText 插件,我有同样的问题,然后从 python 代码向 TCP 服务器发送消息“关闭”,然后
应用程序.js
TCPserver
.on('connection', function(socket)
{
socket.pipe(require('through')
(function(data)
{ //----------------------------
if (data.toString() === 'shutdown')
{
process.exit();
}
//--------------------------
}));
socket.end();
})
与@Alex W 所说的类似,只要您有进程 ID 或 PID,就可以使用以下节点函数向进程发送终止信号:
process.kill(pid, [signal])
就我而言,我在生成 PID 时随时可以使用 PID child_process().spawn.pid
。我已经对其进行了测试,它确实可以在 Win 7 x64 上运行。