[英]Node.js get pid at port
在Node.js中,我想杀死在端口1337
上运行的服务器。 process.kill(pid)
似乎是这样做的方法。 但是,如何在Node.js中获取在端口1337
上运行的服务器的pid?
我看到了很多关于如何使用ps
和lsof
进行此操作的示例。 有没有办法在不依赖Node.js中的Shell命令的情况下实现这一目标?
这是我依靠lsof
来做到这一点的方法:
Number(child_process.execSync('lsof -i :1337 -t'))
如果您以另一个Node.js进程的子进程启动服务器,则只需执行child.pid
即可获取服务器进程的pid。
例:
var child = child_process.spawnSync(command[, args][, options]);
console.log(child.pid);
process.kill(child.pid);
要回答我的问题,我可以使用port-pid
软件包确定port-pid
: https : //www.npmjs.com/package/port-pid
但是,为了解决我的问题,我改而采用了端口正在使用的“充分理由”的哲学,而是选择通过包装require('child_process').spawn
杀死从其产生的子进程require('child_process').spawn
var childProcess = require('child_process');
var spawn = (function () {
var children = [];
process.on('exit', function () {
children.forEach(function (child) {
child.kill();
});
});
return function () {
var child = childProcess.spawn.apply(childProcess, arguments);
children.push(child);
return child;
};
}());
spawn('node', ['server/server.js'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.