Linuxでは、プロセスとポートは共生関係にあります。一方は他方なしでは存在も機能もできません。プロセスはポートを共有する傾向があり、一部のプロセスはオペレーティングシステムの目的を達成するために特定のポートに依存しています。
この記事ガイドでは、あるプロセスで使用されていたポートを解放して、別のプロセスで使用する方法について説明します。
ポートとそれに関連するプロセスを一覧表示する方法
ターゲットポートとプロセスを一覧表示できる場合PID 、それに関連付けられているプロセスを強制終了できます。 Linuxでアクティブに使用されているポートを一覧表示するために使用できるツールがいくつかあります。
より柔軟な推奨またはアプローチは、ネットワーク統計(netstat)コマンドまたはssコマンドを使用することです。 ( netstatよりも高速 )。ほとんどのLinuxディストリビューションではデフォルトのインストールですが、存在しない場合は次のコマンドでインストールできます。
LinuxにNetstatとSSコマンドをインストールする
$ sudo apt-get install net-tools iproute [On Debian/Ubuntu & Mint] $ sudo dnf install net-tools iproute [On CentOS/RHEL/Fedora and Rocky Linux/AlmaLinux] $ pacman -S netstat-nat iproute [On Arch Linux] $ emerge sys-apps/net-tools iproute [On Gentoo] $ sudo dnf install net-tools iproute [On Fedora] $ sudo zypper install net-tools iproute [On openSUSE]
ポートを一覧表示し、特定のプロセスまたはサービスにロックされているかどうかを確認するには、次の構文規則に従ってください。
$ sudo netstat -ltnp | grep -w ':[targeted_port]' OR $ ss -ltnp | grep -w ':[targeted_port]'
たとえば、ポート 80をリッスンしているプロセスまたはサービス 次の方法でリストできます。
$ sudo netstat -ltnp | grep -w ':80' OR $ ss -ltnp | grep -w ':80'

コマンド文字列の下で“ netstat -ltnp 」、オプション-p
1520を指す これは、強制終了するプロセスのPIDです。注意してください。
Linuxでダミープロセスを作成する方法
Linuxオペレーティングシステムのエコシステムを台無しにしないために、いくつかのダミープロセスを作成し、それらを使用してこの記事の目的を示します。 「socat」を使用します 」デモプロセスを作成するためのコマンドラインユーティリティ。
SCTPの下に3つのプロセスを設定しましょう 、 TCP 、および UDP それぞれプロトコル。これらの新しいプロセスを9999のようなランダムなポートにバインドします 。
次のコマンドは、 PIDを使用して一時的なプロセスを生成します (プロセスID )の 8695 。
$ socat sctp-listen:9999,bind=127.0.0.1 stdout &

次のコマンドは、 PIDを使用して一時的なプロセスを生成します (プロセスID) 9080 。
$ socat tcp-listen:9999,bind=127.0.0.1 stdout &

次のコマンドは、 PIDを使用して一時的なプロセスを生成します (プロセスID) 9270 。
$ socat udp-listen:9999,bind=127.0.0.1 stdout &

PID(プロセスID)を使用してプロセスを強制終了する方法
"kill -9"
を使用する コマンドを使用すると、別の優先プロセスで使用するポート番号を人質に保持しているプロセスを取り除くことができます。この場合、PID 8695を使用して3つのプロセスを作成しました 、 9080 、および 9270 。
PID 8695でプロセスを強制終了するには 、次のコマンドを実行しました:
$ kill -9 8695
一度に複数のプロセスを強制終了することもできます。作成されたプロセスをPIDで強制終了するには9080 および9270 、次のようなコマンドを使用します:
$ kill -9 9080 9270
1つのプロセスを同時に強制終了する場合でも、複数のプロセスを同時に強制終了する場合でも、killコマンドを実行します。 上に示したように、空のターミナルインスタンスにつながるはずです。
プロセスがアクティブでなくなったことを確認するために、killコマンドを再実行してみます。 :
$ kill -9 8695

エラーメッセージは、プロセスがアクティブでなくなったことを示します。また、最近強制終了された2つのプロセス [2] 9080 および[3]9270 アクティブではなくなったものとして表示されます。
ファイナルノート
実行中のプロセスを強制終了するルールは単純です。まず、「 netstat」で使用するポートを特定します 」または「ss」 コマンドを実行してから、 PIDをメモします プロセスに添付されています。最後に、「kill-9」を使用します 識別されたPIDと一緒にコマンド そのプロセスを取り除くために。