java - 如何使用 shell 脚本停止 java 应用程序

标签 java shell

我有一个 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/

相关文章:

python - 我如何获得有关我正在编写的模块的信息?

java - 使用 java.lang.ProcessBuilder 运行 root 命令

Django 运行服务器永久

java - 如何暂停 onCreate 直到启动完成?

java - tomcat 上动态 URL 重写的性能方式

java - Android - 从 fragment 显示 AlertDialog 时出错

java - 对 CPU 使用率非常高的 Java 进程进行故障排除 - Tomcat 应用程序

Java读取没有前缀但在命名空间范围内的xml元素

shell - 无法对 SSH 命令使用通配符

linux - 通过 gnuplot 创建图形文件