名前だけを知って、シェルスクリプトを使用して実行中のJavaプログラムを停止する方法はありますか.kshシェルを使用しています
5 に答える
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 を実行する必要があることに注意してください。
JVM に一意のプロパティを追加して、簡単に識別できるようにします (test.class など)。
java -Duniquename=1 test
それを殺すには:
ps ax | grep uniquename | grep -v grep | awk '{print $1}' | xargs kill
開始された Java プログラムの名前に関連付けられたプロセス ID を識別する jps を使用できます (jps は Java プログラムのプロセス マネージャーです)。この ID を使用すると、プロセスを正常に強制終了できます。
ps の -o オプションを使用して、出力をフォーマットできます。
ps -eo cmd,pid | awk '!/awk/&&/mycommand/{cmd="kill -9 "$2;system(cmd)}'
pkill を使用できます。
pkill your_java_program_name
これは、実行中のプログラムのインスタンスを 1 つだけ実行する場合に機能します。