同じ名前のJavaプロセスを一意に識別します。

同じ名前のJavaプロセスを一意に識別します。

MyApp.jarたとえば、同じファイル名で実行される2つのJavaプロセスがあります。

/usr/java/latest/bin/java -jar MyApp.jar

これらの瓶は異なる場所に存在し、異なる構成を使用します。

プロセスを終了したいのですが、2つのプロセスを区別する方法がわかりません。私は次を実行します:

 ps aux | grep [M]yApp.jar

そして得る:

admin    21509  0.8  0.1 1199908 20484 ?       Sl   08:21   0:00 /usr/java/latest/bin/java -jar MyApp.jar
admin    21585  6.7  0.1 1199764 20084 ?       Sl   08:21   0:00 

私はプロセスを区別するためにいくつかのダミーパラメータを使用してプロセスを作成することを考えました。

/usr/java/latest/bin/java -jar MyApp.jar MyAppTheFirst

そして

/usr/java/latest/bin/java -jar MyApp.jar MyAppTheSecond

しかし、これは私にとって少し間違っているようです。もっと良い方法がありますか?

ベストアンサー1

まず、なぜそれらの1つを殺すのですか?プロセスが多すぎるリソースを使用している場合は、次からPIDを取得できますtop

top -n 1

定期的にまたは外部刺激に応答して再起動する必要がある場合プロセス管理:

while true
do
    java -jar MyApp.jar &
    my_app_pid=$!
    while ! whatever_makes_me_think_my_app_should_be_restarted
    do
        sleep 60
    done
    kill $my_app_pid
done

おすすめ記事