651 文字
3 分
【Windows】Portを占有しているプロセスを見つけて強制終了する
最近vue.js使ったWebサービス開発の勉強をしてたのですが、ある時npm run serveを叩いてもlocalhostに繋がらなくなったので、その対応メモです。
ポートを占有しているプロセスを見つける
まずは、ポートを占有しているプロセスを見つけます。今回は8080番ポートに繋がらなくなったので、このポートを占有しているプロセスを特定します。
c:\>netstat -ano | find ":8080" TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2272今回の場合ですと、PIDが2272のプロセスが8080番ポートを占有しているようです。
なお、netstatで使用しているオプションの意味合いはこんな感じです。
| オプション | 説明 |
|---|---|
| a | すべてのポートを表示 |
| n | 名前解決をせずに表示(IPアドレスのまま表示) |
| o | プロセスID(PID)を表示 |
プロセスを確認&強制終了する
PIDからプロセス名の特定は、タスクマネージャーを使えば簡単にできます。
タスクマネージャーを開いて、詳細タブを開きPIDからプロセス名を特定します。この場合ですと、PID 2272のプロセスはnodeであることがわかります。
あとは、nodeを選択してタスクの終了をクリックすると、8080番ポートを占有していたプロセスを強制終了できます。

番外編 ~コマンドでプロセスを確認&強制終了する~
タスクマネージャーを使わなくても、コマンドを使用しても同様のことができます。
PIDからプロセス名を確認する
Windowsにはpsコマンドはありませんが、似たようなコマンドとして、tasklistコマンドというものがあります。
このコマンドを使用しても、PIDからプロセス名を特定できます。
c:\>tasklist | find "2272"node 2272 Console 1 266,048 Kポート占有しているプロセスを強制終了する
Windowsにもkillコマンドっぽいコマンドとしてtaskkillコマンドがあるので、コマンドからもプロセスを強制終了できます。
c:\>taskkill /F /PID 2272ただ、管理者権限のコマンドプロンプトでこのコマンドを叩いても、こんな感じでエラーが表示されて終了できない場合があったので、タスクマネージャーから強制終了するのが間違いないと思います。
c:\>taskkill /F /PID 2272エラー: PID 2272 のプロセスを強制終了できませんでした。理由: アクセスが拒否されました。アクセスが拒否される原因をご存知の方は教えてください・・・
参考: