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