簡體   English   中英

JAR完成執行后如何終止Java進程

[英]How to terminate the Java process when the JAR has finished execution

我有一個執行某些Web服務調用的Java程序。 我將該程序打包到一個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進程的PID寫入文件:

#!/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!!!!!!!!!!"

並在cron殺死它:

kill -9 `cat program.pid`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM