我有一个 shell 脚本,它在 opensuse linux 下运行,它启动一个 java 应用程序(在 jar 下),脚本是:
#!/bin/sh
#export JAVA_HOME=/usr/local/java
#PATH=/usr/local/java/bin:${PATH}
#---------------------------------#
# dynamically build the classpath #
#---------------------------------#
THE_CLASSPATH=
for i in `ls ./lib/*.jar`
do
THE_CLASSPATH=${THE_CLASSPATH}:${i}
done
#---------------------------#
# run the application #
#---------------------------#
java -server -Xms512M -Xmx1G -cp ".:${THE_CLASSPATH}" com.package.MyApp > myApp.out 2>&0 &
这个脚本运行良好。
现在,我想要的是编写一个脚本来优雅地终止这个应用程序,允许我使用 Linux kill 命令的 -15 参数来终止它。
问题是,这台服务器上会运行很多java应用,所以我需要专门kill掉这个。
有什么帮助吗?
提前致谢
费尔南多
最佳答案
将进程 ID 存储在文件中:
java ...blabla... &
echo $! > MyApp.pid
然后您可以使用 kill -TERM $(cat MyApp.pid)
终止 JVM。
或者,您可以使用 jps
列出系统上的 java 进程。它列出了用于启动应用程序的进程 ID 和主类或 jar 文件,这可能足以识别您的应用程序。例如:
$ jps
20168 MyAPp
20186 Jps
$ kill -TERM 20168
关于 jps
的更多信息:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html
关于java - 如何使用 shell 脚本停止 java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9934953/