Web 開発を行う学生は、自分のプログラムが使用するポートが占有されている状況によく遭遇すると思いますが、このとき、同じポートを占有しているプログラムを見つけて閉じてから、自分のプログラムを起動する必要があるため、ポートを占有しているプログラムをすぐに見つけることができ、時間を大幅に節約できます。次に、この記事では Linux、MacOS、Windows での対応方法を説明します。この記事はクイックリファレンスマニュアルとしてご利用いただけます。
Linuxシステム
1. フューザーコマンドを使用する
fuser コマンドは、どのプログラムがディスク上のファイル、マウント ポイント、さらにはネットワーク ポートを現在使用しているかを表示し、プログラム プロセスに関する詳細情報を提供します。コマンドは次のとおりです。
# fuser -v 80/tcp
USER PID ACCESS COMMAND
80/tcp: www 4569 F.... nginx
このポートを占有しているプロセスの詳細を確認できます。ポートを占有しているプロセスを見つけて強制終了することが目的の場合は、次の 1 ステップで実行できます。
fuser -k 80/tcp
2.lsofコマンドを使用する
lsof は、開かれたファイルのリストの略で、プロセスが開いているファイルと、開いているファイルに関連付けられているファイルを見つけるために使用されます。lsof コマンドを使用すると、指定したポートに基づいて、対応するプロセス情報を見つけることもできます。例は次のとおりです。
# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 4569 www 7u IPv4 12379828 0t0 TCP *:http (LISTEN)
nginx 29535 root 7u IPv4 12379828 0t0 TCP *:http (LISTEN)
3. netstat コマンドを使用します。
netstat コマンドは、ネットワーク接続、ルーティング テーブル、ネットワーク インターフェイス情報などを表示し、指定されたポートに応じて対応するプロセス情報を見つけることができます。例は次のとおりです。
# netstat -tlnp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4569/nginx: worker
4. ssコマンドを使用する
ss コマンドは、ネットワーク ポートを含む、現在のシステムで開いているソケット情報を一覧表示できます。指定したポートに従って、対応するプロセス情報を見つけることができます。例:
# ss -tlnp | grep 80
LISTEN 0 511 *:80 *:* users:(("nginx",pid=29535,fd=7),("nginx",pid=4569,fd=7))
macOS システム
Linux システムでの使用法と同様の lsof コマンドを使用します。使用法は次のとおりです。
# lsof -i:80
次のように使用することもできます。
lsof -i -P -n | grep LISTEN | grep 80
Windowsシステム
cmd に次のコマンドを入力して、ポートを占有しているプロセスを見つけます。
netstat -ano | findstr 8088
対応するプロセス ID を見つけた後、プロセス ID を通じて対応するプロセス名を見つけることができます。コマンドは次のとおりです。
tasklist | findstr 进程ID
対応するプロセスを強制終了します。コマンドは次のとおりです。
taskkill /pid 进程ID -f
まとめ
この記事では、特定のポートがどのプロセスによって占有されているかを確認するためのいくつかの実用的な方法について説明します。一般的には、対応するプロセスを見つけて閉じることです。Linux および MacOS では次のコマンドを使用できます。
kill 进程ID
//强制kill
// kill -9 进程ID
Windows のコマンドについては上で説明したため、ここでは説明しません。