web-dev-qa-db-ja.com

node.jsサーバーのすべてのインスタンスを停止します

これが私が初めてNode.jsを使った作業で、私はこの問題に遭遇しました。

IDEのプラグインを介してNodeサーバーを起動しました。残念ながら、私はIDEの端末を使うことができません。そこで私はコマンドラインからスクリプトを実行しようとしました。

これが問題です - 私はExpressモジュールを使用していて、私のアプリはいくつかのポート(8080)をリッスンしています。コマンドラインからアプリを起動すると、このエラーが発生します。

events.js:71
    throw arguments[1]; // Unhandled 'error' event
                   ^
Error: listen EADDRINUSE
    at errnoException (net.js:770:11)
    at HTTPServer.Server._listen2 (net.js:910:14)
    at listen (net.js:937:10)
    at HTTPServer.Server.listen (net.js:986:5)
    at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

このエラーの原因がよくわからない場合でも、アプリが既に使用されているポートをリッスンしていることが原因と考えられます。だから私はしました:

netstat -an

私は見えます

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

IDEから起動しようとしたときに、Nodeサーバーが既に起動されているからです。

それで、知りたいのですが、どうすればすべてのサーバーインスタンスを停止できますか?また、ポート上で実行されているものを検出してそれを強制終了する方法を私に教えてもらえれば。

132
Kiran Ambati

Windowsマシン:

Node.jsサーバーを強制終了する必要があり、他に実行中のNodeプロセスがない場合は、node.exeという名前のすべてのプロセスを強制終了するようにマシンに指示できます。これは次のようになります。

taskkill /im node.exe

それでもプロセスが持続する場合は、/fフラグを追加してプロセスを強制的に終了させることができます。

taskkill /f /im node.exe

よりきめ細かい制御が必要で、特定のポートで稼働しているサーバーのみを強制終了する必要がある場合は、netstatを使用してプロセスIDを見つけ、それに強制終了信号を送信することができます。ですから、あなたの場合、ポートが8080であれば、以下を実行することができます。

C:\>netstat -ano | find "LISTENING" | find "8080"

出力の5列目はプロセスIDです。

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       14828
  TCP    [::]:8080              [::]:0                 LISTENING       14828

taskkill /pid 14828でプロセスを強制終了できます。プロセスが終了を拒否した場合は、コマンドに/f(force)パラメータを追加するだけです。


Linuxマシン:

プロセスはほぼ同じです。マシン上で実行されているすべてのNodeプロセスを強制終了することもできます(SIGKILLが不十分な場合は-$SIGNALを使用してください)。

killall node

あるいはnetstatを使用して、ポートで待機しているプロセスのPIDを見つけることができます。

$ netstat -nlp | grep :8080
tcp        0      0 0.0.0.0:8080         0.0.0.0:*                   LISTEN      1073/node

この場合のプロセスIDは、6列目のプロセス名の前の番号です。これをkillコマンドに渡します。

$ kill 1073

プロセスが終了を拒否した場合は、単にSIGTERMである-9フラグを使用してください。無視することはできません。

$ kill -9 1073
310
hexacyanide

最速の方法は

killall node

Linux、OS Xで動作します

63
zag2art

lsofを使用して、必要なポートにバインドされているプロセスを取得できます。

残念ながら、フラグはシステムによって異なりますが、Mac OS Xでは実行できます。

lsof -Pi | grep LISTEN

たとえば、私のマシンでは、次のようになります。

mongod     8662 jacob    6u  IPv4 0x17ceae4e0970fbe9      0t0  TCP localhost:27017 (LISTEN)
mongod     8662 jacob    7u  IPv4 0x17ceae4e0f9c24b1      0t0  TCP localhost:28017 (LISTEN)
memcached  8680 jacob   17u  IPv4 0x17ceae4e0971f7d1      0t0  TCP *:11211 (LISTEN)
memcached  8680 jacob   18u  IPv6 0x17ceae4e0bdf6479      0t0  TCP *:11211 (LISTEN)
mysqld     9394 jacob   10u  IPv4 0x17ceae4e080c4001      0t0  TCP *:3306 (LISTEN)
redis-ser 75429 jacob    4u  IPv4 0x17ceae4e1ba8ea59      0t0  TCP localhost:6379 (LISTEN)

2番目の数字はPIDで、彼らが聞いているポートは "(LISTEN)"の直前にあります。極端な偏見で終わるには、不正なPIDとkill -9 $PIDを見つけてください。

44

Windows&GitBash端末私はWindows/Webstorm/GitBash端末の中でこのコマンドを使う必要がありました

cmd "/C TASKKILL /IM node.exe /F"
14
Enkode

特定のプロセスを強制終了したい場合は、コマンドラインルートに進むことができます。

ps aux | grep node

プロセスIDを取得してから

kill -9 PID

そして、あなたがすべてのプロセスを殺したいのであれば、そうしてください:

killall -9 node
9
Ali_Hr

これを試すことができます:

taskkill /IM node.exe -F
8
user1796855

あなたも試すことができます:

killall nodejs

2
Digitlimit

あなたが窓を使っているならば、これに従ってください:

1)タスクマネージャを開き、このプロセスを探します。 http://prntscr.com/kv3uqx

2)それからちょうどそれを「タスクの終了」と右クリックしてください。

3)以上で、すべてのnpmコマンドが最初から実行されます。

誰かに役立つことを願っています!

乾杯

1
Neil Bannet

あなたが試すことができます

killall node

あなたも試すことができます

killall nodejs
0
Sultan Ali

マルチプラットフォーム、安定、最良の解決策:

fkillを使ってあなたのportを取っているプロセスをkillします。

fkill -f :8080

Fkillをインストールするには、次のコマンドを使用します。npm i -g fkill

0

windows 10で正常に動作します

taskkill /f /im node.exe

Windowsオペレーティングシステムを使用しています。

私はすべてのノードプロセスを強制終了し、それが機能するアプリを再起動しました。

やってみる

taskkill /im node.exe
0
Sathya Baman

友達を感動させる

ps aux | grep -i node | awk '{print $2}' | xargs  kill -9

しかし、これはあなたが覚えているものです

killall node
0
Alex Nolasco

次のコマンドを使用して、バッチファイルからノードサーバーを強制停止して再起動します。

    @echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF
0
Samadhan Virkar