2016-03-27 9 views
0

Node.jsでは、ポート1337で実行されているサーバーを強制終了します。 process.kill(pid)はそれを行う方法のように思えます。しかし、どうすればいいですかポート1337のNode.jsで実行されているサーバのpidを取得しますか?Node.jsはポートでpidを取得します

pslsofでこれを行う方法の例がたくさんあります。 Node.jsのシェルコマンドに頼らずにこれを取り除く方法はありますか?ここで

は、私がlsofに依存することによって、これを行う方法は以下のようになります

Number(child_process.execSync('lsof -i :1337 -t')) 
+0

別のnodejsプロセスから子プロセスとしてサーバープロセスを起動しましたか? – pietrovismara

+0

@Cuzはい、私の場合はプロセスが終了しました。 – Jackson

答えて

0

あなたが別のnodejsプロセスから子としてサーバーを起動した場合、あなただけのサーバプロセスのPIDを取得するためにchild.pidを行うことができます。

例:

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

私の場合は、もともと 'node'を生成したプロセスが終了しました。すなわち、私は殺すサーバを表す 'child'オブジェクトを持っていません。 – Jackson

+0

私はこの場合、シェルコマンドを使わずにはできないと思います。 2番目の答えで[ここ](http://stackoverflow.com/questions/13206724/how-to-get-the-list-of-process)にも記載されているように、ps-nodeを試すことができます。しかし、私はあなたのコードを少しリファクタリングして、このケースを回避するか、プログラム的なpm2としていくつかのツールを使用することをお勧めします。 – pietrovismara

0

私の質問に答えるために、私はport-pidパッケージのポートでのpid(複数可)を決定することができます。https://www.npmjs.com/package/port-pid

しかし、私の問題を解決するために、私が代わりに採用港が使用されていた "正当な理由"があり、代わりにラッピングによって産卵された場所から子プロセスを殺すことを選択したという哲学があります。require('child_process').spawn

関連する問題