grep – 唯一标识具有相同名称的java进程

我有两个使用相同文件名MyApp.jar运行的java进程(例如).

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

这些罐子存在于不同的地方并使用不同的配置.

我希望能够杀死一个进程,但不知道如何区分这两个进程.我执行:

 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

但这对我来说似乎有点不对劲.有没有更好的办法?

最佳答案
首先,why do you want to kill any of them?如果进程使用了​​太多资源,您可以将PID置于最高位置:

top -n 1

如果需要定期重新启动或对外部刺激作出反应,请使用process management

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

转载注明原文:grep – 唯一标识具有相同名称的java进程 - 代码日志