1つのJavaプロセスのみ終了

1つのJavaプロセスのみ終了

私は通常、いくつかのJavaアプリケーションを実行します。 1つはローカルで実行されているサーバーで、もう1つはNetBeansなどの一部のIDEで実行されます。場合によっては、広範な再配布後にサーバーがOutOfMemoryExceptionにかかり、再起動する前にJavaプロセスを終了する必要があります。

だからそうしましたがpkill -9 java、私が望んでいなかった実行中のIDEも終了しました。それでは、実行中のサーバーに接続されているアプリケーションのみを終了し、他のアプリケーションは終了しないようにするにはどうすればよいですか?私はそれらがすべて同じプロセスの下で実行されていると仮定していますが、それらを区別するためのいくつかの方法が必要です。

答え1

複数のプロセスに関連付けられているプロセスを終了するには、そのプロセスに関連付けられているプロセスIDを使用してプロセスを終了する必要があります。

実行中のJavaプロセスのプロセスIDを取得します。

ps -A |grep java

このコマンドの出力は、システムで実行されているJavaプロセスのリストを提供します。終了して実行したいプロセスのプロセスID(PID)を書き留めます。

kill -9 PID

答え2

IMOの最高のソリューションは次のとおりです。

pkill -9 -f <nameOfYourJavaAplication>

答え3

andを使用する代わりに、sフラグを使用して「java」という名前でリストされているすべてのコマンドを選択できますps。のフラグを使用して、リストされている各プロセスの完全なコマンド名を印刷することもできます。これにより、各Javaプロセスが実際に実行していることを確認できます。完全なコマンドは次のとおりです。 。grepps-Cps-fps -fC java

また、これを使用してすべてのpgrepJavaプロセスを一覧表示することもできます。pgrep -a java各JavaプロセスのPIDと完全なコマンドラインが返されます。

終了するコマンドのPIDがある場合は、それを(SIGKILL)フラグと終了したいJavaプロセスのPIDkillと一緒に使用してください。-9Javaは「SIGTERM」信号を受信すると常に停止しないため(プロセスが「SIGTERM」を処理できるようにするため)、「SIGKILL」信号を送信する必要があることがよくあります。これにより、initは最初に警告なしにプログラムを終了します。

たとえば、ps -fC java戻ると

UID        PID  PPID  C STIME TTY          TIME CMD
jeff      9014  8890  0 08:51 pts/0    00:00:00 java IDE
jeff     11775  8890  6 08:59 pts/0    00:00:00 java TestProgram

またはpsgrep -a javaリターン

9014 java IDE
11775 java TestProgram

誰かを殺したい場合はjava TestProgram逃げなければなりませんkill -9 11775

答え4

あなたは単に使用することができます

jps -l

このコマンドは、JavaプロセスのすべてのプロセスIDを取得して発行します。

殺すプロセスID

注文する

関連情報