java - 如何在 JAR 完成执行时终止 Java 进程

标签 java linux process jar

我有一个 Java 程序可以执行一些 Web 服务调用。我将该程序打包在一个 JAR 文件中,并将其放置在我的 Linux 机器上。然后我制作了一个 .sh 文件,其内容是

#!/bin/sh 
. /etc/profile 
echo "The Script Starts now!!!!!!!!!!" 

export JAVA_HOME=/u01/app/oracle/java/java64/jrockit-jdk1.6.0_29 
export PATH=$JAVA_HOME/bin:$PATH 
cd /u01/CRM_PRD/stores/CRM_COC_Utility/Jars 

java -jar CRM_AccountCOC.jar 

echo "The Script ends now!!!!!!!!!!"

我在 cronjob 中安排的这个 sh 文件每 45 分钟运行一次,这意味着上述命令每 45 分钟执行一次。

问题是当我在一两天后执行 TOP 命令时,我可以看到这个 JAR 的多个执行状态。因此,我的 Linux 服务器的 %CPU 使用率增加了。

JAR 需要 10 分钟才能完成,重新执行 JAR 的频率是在 45 分钟后。所以我需要在我的代码或 sh 文件中做些什么,以便在执行此 JAR 时,java 进程也被终止。

希望它解释了我的问题。我在 linux 和 Java 方面不是很专业

最佳答案

基本上,如果所有非守护线程都已完成,则 Java 应用程序将终止。但是,您可以通过以下方式强制它终止:

System.exit(0);

关于java - 如何在 JAR 完成执行时终止 Java 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19651883/

相关文章:

java - 当链接实体名称不是从父实体名称派生时,如何避免使用 OneToOne 映射出现 NullPointerException?

java - 如何使用 Scala (50.0/51.0) 发出更新的类文件版本?

java - 子字符串范围 (Java)

linux - CentOS 错误 :/lib/ld-linux. so.2:错误的 ELF 解释器:没有这样的文件

c# - 如何获取远程机器上正在运行的进程的描述?

java - 用于连接 Oracle 数据库的命令行编译

linux - 反对用户级线程的最具破坏性的论据

linux - DNS 错误列表

c# - 从 Process.Start 返回的不同引用

java - Mozilla FireFox(无响应)-Selenium WebDriver 拒绝通过 driver.quit() 命令终止