[解決済み】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サーバーが起動されていたためです。
そこで知りたいのですが、すべてのサーバーインスタンスを停止するにはどうすればよいのでしょうか?また、ポートで実行されているものを検出し、それを停止する方法も教えてください。
解決方法は?
Windowsマシンです。
Node.jsサーバーを終了させる必要があり、他のNodeプロセスを実行していない場合、以下の名前のプロセスをすべて終了させるようにマシンに指示することができます。
node.exe
. それは次のようなものです。
taskkill /im node.exe
そして、それでもプロセスが持続する場合は、強制的にプロセスを終了させるために
/f
フラグを使用します。
taskkill /f /im node.exe
より細かい制御が必要で、特定のポートで動作しているサーバーだけを殺す必要がある場合は、次のようにします。
netstat
でプロセスIDを見つけ、そこにkillシグナルを送ります。つまり、あなたの場合、ポートが
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)パラメータをコマンドに追加します。
MacOSマシン。
処理内容はほぼ同じです。そのマシンで動いているNodeのプロセスを全て殺すかのどちらかです。
killall node
あるいはまた、言及されているように
以下の@jacob-groundwaterさんの回答です。
を使って
lsof
を使えば、あるポートでリッスンしているプロセスの PID を見つけることができます。
-i
フラグとポートを指定することで大幅にスピードアップします)。
$ lsof -Pi :8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 1073 urname 22u IPv6 bunchanumbershere 0t0 TCP *:8080 (LISTEN)
この場合のプロセスIDは、PIDカラムの下にある数字で、これを
kill
コマンドを実行します。
$ kill 1073
もしプロセスが終了することを拒否した場合は、単に
-9
フラグを使用します。
SIGTERM
であり、無視できない。
$ kill -9 1073
Linuxマシンです。
ここでも、ほぼ同じような処理になります。そのマシンで動作している全てのNodeプロセスを終了させるか(
-$SIGNAL
もし
SIGKILL
が不十分な場合)。
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
もしプロセスが終了することを拒否した場合は、単に
-9
フラグを使用します。
SIGTERM
であり、無視できない。
$ kill -9 1073
関連
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
-
[解決済み] Node.JS: エラーが発生しました。[nodemon] 内部ウォッチに失敗しました: watch ENOSPC