繁体   English   中英

Node.js在端口获取pid

[英]Node.js get pid at port

在Node.js中,我想杀死在端口1337上运行的服务器。 process.kill(pid)似乎是这样做的方法。 但是,如何在Node.js中获取在端口1337上运行的服务器的pid?

我看到了很多关于如何使用pslsof进行此操作的示例。 有没有办法在不依赖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-pidhttps//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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM