Linux/Unix で特定のポートを使用しているプロセスを殺す方法
Linux/Unix システムにおいて、特定のポートを使用しているプロセスを終了させるには、一般的に以下の手順を踏みます。
- ポートを使用しているプロセスを特定する
- プロセスを終了させる
詳細な説明
- lsof コマンドを使用する
lsof -i :<ポート番号>
で、指定したポートを使用しているプロセスの一覧を表示します。- 例:
lsof -i :8080
は、ポート 8080 を使用しているプロセスを表示します。
- kill コマンドを使用する
kill <プロセス ID>
で、指定したプロセス ID のプロセスを終了させます。- 例:
kill 12345
は、プロセス ID 12345 のプロセスを終了させます。 - 強制終了させる場合は
kill -9 <プロセス ID>
を使用します。
例
# ポート 8080 を使用しているプロセスを特定する
lsof -i :8080
# プロセス ID が 12345 のプロセスを終了させる
kill 12345
注意点
- プロセスを強制終了させる
kill -9
は、プロセスに異常終了を引き起こす可能性があります。可能な限り、通常のkill
コマンドを使用してください。 - ポート番号は、使用するプロトコルに応じて指定します。TCP の場合は
:<ポート番号>
、UDP の場合は:<ポート番号>/udp
となります。 - セキュリティ上の理由から、他のユーザーのプロセスを終了させることは避けてください。
備考
Linux で特定ポートを使用中のプロセスを強制終了するコード例
Linux システムにおいて、特定のポートを使用しているプロセスを強制終了させるためのコマンド例を示します。
コード例
lsof と kill を使用する方法
# ポート 8080 を使用しているプロセスを一覧表示
lsof -i :8080
# プロセス ID (PID) が 12345 のプロセスを強制終了
kill -9 12345
kill -9 12345
コマンドは、プロセス ID が 12345 のプロセスを強制終了します。
# ポート 8080 を使用しているプロセスの PID を取得
fuser -n tcp 8080
# 取得した PID を使ってプロセスを強制終了
kill -9 <PID>
<PID>
の部分を、表示された PID に置き換えて実行します。
説明
lsof
コマンドは、開いているファイルやネットワーク接続に関する情報を表示します。-i :<ポート番号>
オプションで、指定したポートを使用しているプロセスを一覧表示できます。fuser
コマンドは、ファイルやデバイスを使用しているプロセス情報を表示します。-n tcp <ポート番号>
オプションで、TCP ポートを使用しているプロセスの PID を取得できます。kill
コマンドは、指定したプロセスを終了させます。-9
オプションは、強制終了を意味します。
kill -9
はプロセスを強制終了させるため、データ損失やシステム不安定化のリスクがあります。可能な限り、通常のkill
コマンドを使用してください。
Linux で特定ポートを使用中のプロセスの代替的な強制終了方法
これまで lsof
や fuser
を使った方法を紹介しましたが、他にも特定ポートを使用中のプロセスを強制終了させる方法があります。
代替的な方法
netstat と kill を組み合わせる
netstat
コマンドでポートを使用中のプロセス情報を取得し、その PID を元にkill
コマンドでプロセスを終了させます。
# ポート 8080 を使用中のプロセス情報を表示
netstat -antlp :8080
# プロセス ID (PID) が 12345 のプロセスを強制終了
kill -9 12345
ss
コマンドはnetstat
よりも高速で、より多くの情報を提供します。
# ポート 8080 を使用中のプロセス情報を表示
ss -tulwn :8080
# プロセス ID (PID) が 12345 のプロセスを強制終了
kill -9 12345
ワンライナーによる簡略化
lsof
とkill
を組み合わせたワンライナーで処理を簡略化できます。
kill -9 $(lsof -t -i:8080)
- このコマンドは、ポート 8080 を使用しているすべてのプロセスの PID を取得し、それらのプロセスを強制終了します。
netstat
とss
は、ネットワークソケットに関する情報を表示するコマンドであり、プロセスそのものの情報を直接取得するものではありません。- ワンライナーは簡潔ですが、複数のプロセスが同じポートを使用している場合、すべてが強制終了されるため注意が必要です。
linux unix port