Linux/Unix で特定のポートを使用しているプロセスを殺す方法

2024-08-18

Linux/Unix システムにおいて、特定のポートを使用しているプロセスを終了させるには、一般的に以下の手順を踏みます。

  1. ポートを使用しているプロセスを特定する
  2. プロセスを終了させる

詳細な説明

  • 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 で特定ポートを使用中のプロセスの代替的な強制終了方法

これまで lsoffuser を使った方法を紹介しましたが、他にも特定ポートを使用中のプロセスを強制終了させる方法があります。

代替的な方法

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

ワンライナーによる簡略化

  • lsofkill を組み合わせたワンライナーで処理を簡略化できます。
kill -9 $(lsof -t -i:8080)
  • このコマンドは、ポート 8080 を使用しているすべてのプロセスの PID を取得し、それらのプロセスを強制終了します。
  • netstatss は、ネットワークソケットに関する情報を表示するコマンドであり、プロセスそのものの情報を直接取得するものではありません。
  • ワンライナーは簡潔ですが、複数のプロセスが同じポートを使用している場合、すべてが強制終了されるため注意が必要です。

linux unix port



C++ コードのプロファイリング (Linux) - 代替手法

C++ コードを実行している Linux 上でどのようにプロファイルするのかについて、日本語で説明します。プロファイリングは、コードの性能を分析し、ボトルネックを特定する手法です。Linux 上では、さまざまなプロファイリングツールが利用できます。以下は、一般的なツールです。...


「Linux」「bash」「ファイルI/O」における出力のファイルへのリダイレクトと標準出力

リダイレクトとは、プログラムの標準出力や標準エラー出力を、ファイルや別のプログラムに転送する操作です。標準出力 (stdout): プログラムが通常出力する情報です。標準エラー出力 (stderr): プログラムがエラーメッセージを出力する場所です。...


共用ライブラリエラーの代替的な解決方法

このエラーは、Linux上でプログラムを実行しようとした際に発生し、プログラムに必要な共有ライブラリが見つからないことを示しています。 共有ライブラリは、複数のプログラムで共有できるコードの集まりで、プログラムの効率化やモジュール化に役立ちます。...


スクリーンセッション終了に関するコード例解説

Linux環境において、screenというプログラムは、端末セッションを管理するためのツールです。一度開始したセッションから端末を切断しても、セッションはバックグラウンドで継続し、後で再接続することができます。これを「分離されたスクリーンセッション」と呼びます。このセッションを終了させる方法について説明します。...


Bash ファイルループ処理の解説とコード例

Bashスクリプトにおいて、ファイルの内容を一行ずつ処理するにはいくつかの方法があります。最も一般的な方法は while ループと read コマンドを使うことです。while read line; do : この部分で、ファイルから一行ずつ読み込み、line 変数に代入します。...



linux unix port

sudoで出力先を書き込み権限のない場所にリダイレクトする方法 (日本語)

手順:sudoコマンドの構文:sudo command > output_file sudo: スーパーユーザー権限でコマンドを実行します。command: 実行したいコマンドです。> output_file: 出力を指定したファイルにリダイレクトします。


質問:Linuxにおけるアプリケーションやプロセスの実際のメモリ使用量をどのように測定できるか?

Linux上で動作するアプリケーションやプロセスの実際のメモリ使用量をどのように測定することができるでしょうか?Linuxでは、アプリケーションやプロセスのメモリ使用量を測定するためのさまざまなツールとコマンドが提供されています。以下にその一部を紹介します。


「ディレクトリのシンボリックリンクを削除する」の日本語解説 (Linux, ファイル, シンボリックリンク)

ディレクトリのシンボリックリンクを削除するとは、Linuxシステムにおいて、あるディレクトリへのショートカットのような役割を果たすシンボリックリンクを削除する操作を指します。ターミナルを開く:ターミナルを開く:シンボリックリンクの場所を確認:


大規模なSQLiteデータベースを扱うためのベストプラクティス:パフォーマンスとスケーラビリティを向上させる

本記事では、WindowsとLinux環境における1GB以上のSQLiteデータベースの最適化に関するヒントを解説します。SQLiteは軽量で使いやすいデータベースエンジンですが、大量のデータを扱う場合はパフォーマンスの低下が懸念されます。そこで、以下の項目について説明します。


日本語解説: シェルスクリプトでの Yes/No/Cancel 入力 (代替方法)

日本語解説:Linuxのシェルスクリプトでユーザーに Yes/No/Cancel の選択肢を提供し、その入力を受け取る方法はいくつかあります。ここでは、一般的な方法を解説します。read choice: ユーザーの入力を変数choiceに格納します。