特定のポートで実行されているサービスを終了するスクリプトを作成しようとしています。これは私のスクリプトです。
a=$(ps ax | grep 4990 | grep java | awk '{print $1}')
kill -9 $a
これはJavaプログラムです。スクリプトは時々動作しますが、ほとんどの場合奇妙に失敗します。
ポートで実行されているサービスを終了する他の方法はありますか?私のポートはです4990
。
答え1
あなたは試すことができますfuser
:
fuser -k 4990/tcp
または、次のようにしてlsof
プロセスkill
IDを取得します。
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";
}
?>
- PHPファイルの作成
kill.php
- 必要なポートを使用してPHPファイルを実行します。
$ php kill.php 8088