Node.js Holen Sie sich pid in port

In Node.js ich töten will ein server läuft auf port 1337. process.kill(pid) scheint, wie die Art und Weise, das zu tun. Aber wie kann ich bekommen die pid der server läuft auf port 1337 im Node.js?

Ich sehe viele Beispiele, wie dies zu tun mit ps und lsof. Gibt es eine Möglichkeit dieses Weg zu ziehen, ohne sich auf shell-Befehle in Node.js?

Hier ist, wie würde ich dies tun, indem Sie sich auf lsof:

Number(child_process.execSync('lsof -i :1337 -t'))
  • Haben Sie gestartet, den server-Prozess als ein Kind aus einem anderen nodejs-Prozess?
  • Ja, und in meinem Fall, der Prozess ist nun beendet.
InformationsquelleAutor Jackson | 2016-03-27



2 Replies
  1. 0

    Wenn du den server gestartet als ein Kind aus einem anderen nodejs-Prozess, können Sie nur child.pid um die pid des server-Prozesses.

    Beispiel:

    var child = child_process.spawnSync(command[, args][, options]);
    console.log(child.pid);
    process.kill(child.pid);
    • In meinem Fall, der Prozess, der ursprünglich hervorgebracht node beendet wurde. also, ich habe keine child Objekt, das die server, die ich töten will.
    • Ich verstehe, in diesem Fall ich glaube nicht, dass Sie tun können, ohne shell-Befehle. Sie könnten versuchen, mit ps-Knoten als auch festgestellt hier in der zweiten Antwort. Aber ich schlage vor, Sie zu überarbeiten Sie Ihren code ein wenig zu vermeiden, in diesem Fall, oder nutzen ein tool wie den programmatischen pm2.
  2. 0

    Mir die Frage zu beantworten, kann ich bestimmt die pid(s) an einen port mit der port-pid Paket: https://www.npmjs.com/package/port-pid

    Jedoch, um mein problem zu lösen, habe ich Sie stattdessen angenommen, die Philosophie, dass es einen „guten Grund“, war der Hafen im Einsatz, und anstatt sich zu töten, wird der Kind-Prozess aus, wo es hervorgebracht wurde, indem er 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'])

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.