特定のポートで実行されているすべてのサービスの終了

特定のポートで実行されているすべてのサービスの終了

特定のポートで実行されているサービスを終了するスクリプトを作成しようとしています。これは私のスクリプトです。

a=$(ps ax | grep 4990 | grep java | awk '{print $1}')
kill -9 $a

これはJavaプログラムです。スクリプトは時々動作しますが、ほとんどの場合奇妙に失敗します。

ポートで実行されているサービスを終了する他の方法はありますか?私のポートはです4990

答え1

あなたは試すことができますfuser

fuser -k 4990/tcp

または、次のようにしてlsofプロセスkillIDを取得します。

kill $(sudo lsof -t -i:4990)

答え2

ポート番号8080で実行されているサービスまたはプロセスを終了する前に、8080ポートプロセス識別番号(PID)を見つけて終了する必要があります。 8080 ポート番号 PID を検索するには、次のコマンドを実行します。

sudo lsof -t -i:8080

ここでは、

  • Sudo- 管理者権限(ユーザーID、パスワード)を要求する命令です。
  • ラソフ- ファイルリスト(関連プロセスのリストにも使用されます)
  • -ティー- プロセスIDのみを表示
  • -私- インターネット接続に関連するプロセスのみを表示
  • :8080- そのポート番号のプロセスのみを表示

これで、次のようにPIDを簡単に終了できます。

sudo kill -9 <PID>

ここでは、

  • Kill - プロセスを終了するコマンド
  • -9——強い

コマンドを使用して特定のポートでプロセスを終了できます。次のコマンドを使用します。

sudo kill -9 $(sudo lsof -t -i:8000)

詳細については、次のリンクを参照してください。 Linuxの特定のポートでプロセスを終了する方法

答え3

<?php
  $port = $argv[1]; 
  if(!empty($port) && is_numeric($port) ){
  $pid = trim(shell_exec("lsof -t -i:".$port));
  if(!empty($pid)){
     shell_exec("sudo kill -9 ".$pid);
     echo "pid : ".$pid."  killed which is listened port : ".$port."\xA";
  }
  else{
     echo " [X] no such process found for pid : ".$port."\xA";
  }
  }
  else{ 
     echo " invalid pid \xA";
  }
?>
  1. PHPファイルの作成kill.php
  2. 必要なポートを使用してPHPファイルを実行します。$ php kill.php 8088

関連情報