如何在JAR完成执行后终止Java进程

如何在JAR完成执行后终止Java进程,java,linux,process,jar,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 /u

我有一个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使用率增加了%

罐子需要10分钟才能完成,重新打印罐子的频率是45分钟后。所以我需要在我的代码或sh文件中做什么,这样当这个JAR被执行时,java进程也会被终止


希望它能解释我的问题。我对linux和Java不太专业,基本上,如果所有非守护进程线程都完成了,那么Java应用程序就会终止。但是,您可以通过以下方式强制其终止:

System.exit(0);

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

System.exit(0);

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

System.exit(0);

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

System.exit(0);
将java进程写入文件:

#!/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 & # run jar as background process
echo $! > program.pid

echo "The Script ends now!!!!!!!!!!"
然后杀死它:

将java进程写入文件:

#!/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 & # run jar as background process
echo $! > program.pid

echo "The Script ends now!!!!!!!!!!"
然后杀死它:

将java进程写入文件:

#!/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 & # run jar as background process
echo $! > program.pid

echo "The Script ends now!!!!!!!!!!"
然后杀死它:

将java进程写入文件:

#!/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 & # run jar as background process
echo $! > program.pid

echo "The Script ends now!!!!!!!!!!"
然后杀死它:


首先,当您将java应用程序编程为运行10分钟时,您需要找出它运行45分钟的原因。尝试查找是否存在阻塞线程。如果java应用程序正在终止,那么您不需要对Linuxfirs执行任何强制终止操作。您需要找出java应用程序运行45分钟的原因,然后将其编程为运行10分钟。尝试查找是否存在任何阻塞线程。如果java应用程序正在终止,那么您不需要对Linuxfirs执行任何强制终止操作。您需要找出java应用程序运行45分钟的原因,然后将其编程为运行10分钟。尝试查找是否存在任何阻塞线程。如果java应用程序正在终止,那么您不需要对Linuxfirs执行任何强制终止操作。您需要找出java应用程序运行45分钟的原因,然后将其编程为运行10分钟。尝试查找是否存在任何阻塞线程。若java应用程序正在终止,那个么您不需要从Linux执行任何强制终止操作