Node.js在端口获得pid

时间:2016-03-27 16:44:50

标签: node.js process port pid kill

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

我看到了很多关于如何使用pslsof执行此操作的示例。有没有办法在不依赖Node.js中的shell命令的情况下解决这个问题?

依靠lsof

,我将如何做到这一点
Number(child_process.execSync('lsof -i :1337 -t'))

2 个答案:

答案 0 :(得分:0)

如果您从另一个nodejs进程启动服务器作为子进程,则只需执行child.pid即可获取服务器进程的pid。

示例:

var child = child_process.spawnSync(command[, args][, options]);
console.log(child.pid);
process.kill(child.pid);

答案 1 :(得分:0)

要回答我的问题,我可以使用port-pid包确定端口上的pid:https://www.npmjs.com/package/port-pid

然而,为了解决我的问题,我改为采用了这样一种理念,即端口正在使用“有充分的理由”,而是选择通过包装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'])