Linux下使用shell腳本+定時任務crontab實現定時重啟Jar包


最近項目上有個小需求,在Linux下定時重啟SpringBoot項目打好的Jar包,定時任務使用crontable。

crontable -e 添加定時任務,例如:*/3 * * * * /usr/lcoal/autoRestart.sh,每3分鍾執行autoRestart腳本。

 

shell腳本大致寫法:

1,獲取Jar包運行時所占用的進程。

2,kill掉進程。

3,加載環境變量。

4,后台重啟Jar包,指定日志輸出路徑。

 

話不多說,直接開始整~~

一.編寫可執行shell腳本

1,創建腳本文件autoRestart.sh

1 touch autoRestart.sh

2,將.sh文件變為可執行文件

chmod +x autoRestart.sh  #文件變為可執行文件,可以看到文件名變色

3,使用vim進入腳本文件,注意:shell腳本中必須要有#!/bin/bash,否則shell腳本無法執行

 1 #!/bin/bash
 2 ID=`ps -ef | grep java | grep -v 'grep' | awk '{print $2}'` #注意查詢出bash本身的進程號
 3 echo $ID
 4 echo "--------------"
 5 for id in $ID
 6 do
 7 kill -9 $id
 8 echo "killed $id"
 9 done
10 sleep 2
11 echo "restart begin"
12 source /etc/profile
13 nohup java -jar /usr/local/gateway.jar > /usr/local/nohup.out &
14 processID=`ps -ef | grep java | grep -v 'grep' | awk '{print $2}'`
15 echo "restart success $processID"

 寫shell腳本后,可使用 sh autoRestart.sh 或 ./autoRestart.sh 來測試一下腳本文件是否可以執行成功。

上述腳本解釋:

1,查找java相關進程並取出進程號賦值給ID;

2,循環遍歷變量ID,kill相關進程;

3,加載環境變量;

4,后台執行nohup java -jar 命令啟動Jar包,並將日志輸出到指定的nohup.out;

5,查詢新啟動的java進程號;

二.配置定時任務

1,編輯定時任務文件

1 crontab -e

2,添加每3min執行一次(crontab定時任務中文件需使用絕對路徑)

1 */3 * * * * /usr/local/autoRestart.sh 

3,查看已配置的定時任務列表

1 crontab -l

ps.(1).重新加載crond服務

1 /sbin/service crond reload    

(2).查看定時任務執行日志

1 tail -f /var/log/cron

(3).判斷語句寫法格式需要注意一下:

if+空格+[+空格+表達式+空格+];then  如:

1 if [ $(ps -ef | grep java | grep -v 'grep' | wc -l) eq 25509 ];then

至此,Linux下使用shell腳本+定時任務crontab實現定時重啟Jar包大功告成。。。

 

cron表達式資料:https://www.cnblogs.com/tooker/p/14666595.html

vim中復制整行、刪除整行:https://www.cnblogs.com/tooker/p/14668058.html

awk簡單用法:https://www.cnblogs.com/tooker/p/14677718.html

wc -l :https://www.cnblogs.com/tooker/p/14677913.html

 

 

本文參考地址:https://blog.csdn.net/weixin_39153210/article/details/98937525

https://blog.csdn.net/Tha_Real/article/details/108117612

 

本文出自作者原創,未經允許切勿轉載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM