Linux マシンの特定のポートで実行されているプロセスを停止する必要がある状況に遭遇したことがありますか?
実行中のアプリケーションが誤動作したり、ネットワーク リソースやローカルの CPU パワーを占有したりしているのではないかと心配しているかもしれません。このようなアプリケーションは、排除したいセキュリティ上の脅威となる可能性さえあります。
目次
理由が何であれ、端末から fuser、lsof、および netstat コマンドを (kill と共に) 使用して、ポート番号を使用している Linux プロセスを見つけて強制終了することができます。これらのコマンドは、Ubuntu を含むほとんどの Linux オペレーティング システムで機能します。
fuser コマンドを使用して Linux プロセスを強制終了する方法
ポート番号を使用してプロセスを強制終了する最も簡単な方法の 1 つは、定着コマンド。この Linux 端末コマンドは、ファイルまたはソケットにアクセスするプロセスを一覧表示または強制終了できます。アプリがネットワーク アクティビティを使用して実行されている (したがって開いているポートを使用している) 場合、アプリはおそらくこれら 2 つのいずれかを実行しています。
続行する前に、Linux PC でコマンド ライン ターミナルを快適に使用できることを確認する必要があります。
fuser を使用してポート番号を使用しているプロセスを一覧表示するには、次の構文を使用できます。
fuser-n protocol port
この例では、プロトコルは tcp または udp で、ポートは確認するポート番号です。たとえば、TCP ポート 80 を使用しているプロセスを確認するには、次のコマンドを実行します。ポート。
これらのプロセスを強制終了するには、fuser に-k オプションを追加します。これにより、各プロセスに SIGTERM シグナルが送信され、正常に終了するように求められます。例:
fuser-k-n tcp 80
これにより、TCP ポート 80 を使用するすべてのプロセスが強制終了されます。
一部のプロセスが SIGTERM に応答しない場合、-k の代わりに-KILL を使用できます。これにより kill シグナル (SIGKILL) が送信され、特定した現在実行中のプロセスを強制的に即座に終了させるのに役立ちます。ただし、これによりデータの損失や破損が発生する可能性があるため、慎重に使用してください。例:
fuser-KILL-n tcp 80
これにより、TCP ポート 80 を使用するすべてのプロセスが強制的に強制終了されます。問題が発生した場合は、これらのコマンドをスーパー ユーザーとして (sudo コマンドを使用して) 実行するか、代わりに root ユーザーを使用して実行してください。
lsof コマンドを使用して Linux プロセスを強制終了する方法
Linux PC でポート番号を使用してプロセスを強制終了する別の方法は、lsof コマンドを使用することです。このコマンドは、システムで開いているファイルとソケットを一覧表示できます。
特定のポート番号を使用しているプロセスを一覧表示するには、次の構文を使用できます:
lsof-i protocol:port
前述のように、プロトコルは tcp または udp で、ポートは確認するポート番号です。たとえば、TCP ポート 53 (通常は DNS 要求に使用される) を使用しているプロセスを確認するには、次のコマンドを実行します:
lsof-i tcp:53
そのポートを使用する各プロセスに関する情報 (PID を含む)。
これらのプロセスを強制終了するには、lsof で-t オプションを使用できます。これにより、他の情報なしでプロセスの PID のみが出力されます。その後、任意のシグナル オプションを使用して、この出力を kill コマンドにパイプできます。例:
kill $(lsof-t-i tcp:53)
これにより、TCP ポート 53 を使用するすべてのプロセスに SIGTERM シグナル (デフォルト) が送信されます。
一部のプロセスが以前のように SIGTERM シグナルに応答しない場合は、kill の後に何もしない代わりに-9 を使用できます。これにより、以前と同様に SIGKILL シグナルが送信され、強制的に強制終了されますが、データの損失や破損が発生する可能性もあります。例:
kill-9 $(lsof-t-i tcp:53)
これにより、TCP ポート 53 を使用するすべてのプロセスに SIGKILL シグナル (デフォルト) が強制的に送信されます。
netstat コマンドを使用して Linux プロセスを強制終了する方法
netstat コマンドを使用して、アクティブで開いているネットワーク ポートを使用して Linux PC で実行中のプロセスを追跡することもできます。 netstat を使用すると、システムのネットワーク接続と統計を表示して、問題のあるプロセスを特定できます。
ポート番号とその PID を使用してプロセスを一覧表示するには、2 つのオプションを追加する必要があります。PID を表示する-p と、リッスンしているソケットのみを表示する-l です。
また、プロトコル (tcp、udp など) を指定し、必要に応じて状態 (LISTEN など) でフィルター処理する必要があります。たとえば、ポートでリッスンしている TCP プロセスを確認するには、次のコマンドを実行します。 、その PID を含みます。
特定のポートでフィルタリングするには、別のオプション-n を追加する必要があります。これは、名前の代わりに数値アドレスを表示します。また、正確なアドレス形式を指定する必要があります: [protocol][@hostname|hostaddr][:service|port]。
たとえば、ポート 80 でリッスンしている TCP プロセスを確認するには、次のコマンドを実行します。
netstat-p tcp-l-n 80
これにより、ポート 8080 でリッスンしている各 TCP ソケットに関する情報を、その PID を含めて出力します。
これらのプロセスを強制終了するには、任意のシグナル オプションと netstat から取得した PID を指定して kill コマンドを使用できます。例:
kill 1234 5678
これにより、SIGTERM シグナル (デフォルト) が PID 1234 および 5678 のプロセスに送信されます。
一部のプロセスが送信しない場合以前のように SIGTERM シグナルに応答するには、kill の後に何も指定しない代わりに-9 を使用できます。これにより、以前と同様に SIGKILL シグナルが送信され、強制的に即座に終了されますが、以前と同様にデータの損失や破損が発生する可能性があります。例:
kill-9 1234 5678
これにより、たとえば、PID 1234 および 5678 を持つプロセスに SIGKILL シグナルが強制的に送信されます。 1234 を実行中のプロセスの正しい PID に置き換えます。
Linux アプリケーションの制御
上記の手順のおかげで、Linux を使用してポート番号を使用して、実行中の Linux プロセスをすばやく強制終了できます。コマンドライン。特に SIGKILL シグナルを使用してプロセスを強制終了するときは注意してください。望ましくない副作用が発生する可能性があるためです。結局のところ、システムを不安定にさせたくありません。
Linux でのシステム パフォーマンスを詳しく調べたいですか?次に、Linux でのメモリ使用量を確認することをお勧めします。潜在的なセキュリティ リスクが心配な場合は、Linux でもパスワードを変更することをお勧めします。
新しい Linux ディストリビューションに切り替える必要がありますか?初心者の方は、Linux Mint を安全で安定した代替手段と考えてください。