11

名前だけを知って、シェルスクリプトを使用して実行中のJavaプログラムを停止する方法はありますか.kshシェルを使用しています

4

5 に答える 5

20

Mnementh の提案をフォローアップします。

これは仕事をする必要があります

jps -l | grep org.example.MyMain | cut -d ' ' -f 1 | xargs -rn1 kill
  • jps -l: 「アプリケーションのメイン クラスの完全なパッケージ名またはアプリケーションの JAR ファイルへの完全なパス名」で Java プロセスをリストします。

  • grep:お好きな工程をお選びください

  • cut -d -' ' -f 1: 区切り文字 ' ' を使用して出力を列に分割し、最初のもの (pid) のみを出力します。

  • xargs -rn1 kill: 各 PID に対して kill を実行します (存在する場合)

プロセスを実行しているときと同じユーザー (またはルート) で jps と xargs を実行する必要があることに注意してください。

于 2010-01-25T11:43:55.023 に答える
6

JVM に一意のプロパティを追加して、簡単に識別できるようにします (test.class など)。

java -Duniquename=1 test

それを殺すには:

ps ax | grep uniquename | grep -v grep | awk '{print $1}' | xargs kill
于 2010-01-25T11:33:28.543 に答える
3

開始された Java プログラムの名前に関連付けられたプロセス ID を識別する jps を使用できます (jps は Java プログラムのプロセス マネージャーです)。この ID を使用すると、プロセスを正常に強制終了できます。

于 2010-01-25T11:30:01.187 に答える
1

ps の -o オプションを使用して、出力をフォーマットできます。

ps -eo cmd,pid | awk '!/awk/&&/mycommand/{cmd="kill -9 "$2;system(cmd)}'
于 2010-01-25T14:32:43.887 に答える
1

pkill を使用できます。

pkill your_java_program_name

これは、実行中のプログラムのインスタンスを 1 つだけ実行する場合に機能します。

于 2010-01-25T11:28:15.043 に答える