私は通常、いくつかの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プロセスが実際に実行していることを確認できます。完全なコマンドは次のとおりです。 。grep
ps
-C
ps
-f
ps -fC java
また、これを使用してすべてのpgrep
Javaプロセスを一覧表示することもできます。pgrep -a java
各JavaプロセスのPIDと完全なコマンドラインが返されます。
終了するコマンドのPIDがある場合は、それを(SIGKILL)フラグと終了したいJavaプロセスのPIDkill
と一緒に使用してください。-9
Javaは「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
注文する