簡體   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