由于一些不可抗拒的原因,項目部署后需要定時檢測項目是否正常運行,否則將執行重啟命令。
在具體實施過程中發現,定時器執行無誤,但是重啟命令無法正常啟動。多方查找發現Shell腳本中的Java命令需要引入環境變量方可正常執行。因此做了一下修改,腳本如下(僅供參考):
1、crontab執行配置
* * * * * cd /項目目錄 && ./auto_start.sh >> /log/auto.out
2、Shell腳本
#!/bin/bash #導入環境變量 export LANG="en_US.UTF-8" export JAVA_HOME=/usr/local/javaexport CLASSPATH=$JAVA_HOME/libexport PATH=$PATH:$JAVA_HOME/binAPP_NAME=appJAR_NAME=app.jarLog="log.out"JVM="-server -Xms1024m -Xmx1024m -Xmn256m -Xss512k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"pid=$(ps -ef | grep -v 'grep' | egrep $JAR_NAME| awk '{printf $2 " "}')if [ "$pid" != "" ]; then echo "boot ( pid $pid) is running"else echo -n "auto_start process pid: " nohup java $JVM -jar $JAR_NAME --spring.profiles.active=dev > $Log 2>&1 & echo $(ps -ef | grep -v 'grep' | egrep $JAR_NAME| awk '{printf $2 " "}')fi
簡單記錄如此,目的是為了提供一種解決問題的思路,當在使用crontab的過程中出現類似不可執行的命令時,當查看是否需要引入相應的環境變量。
恐有疏漏,歡迎指正。討論中精進技術,同技術死磕到底!
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接
新聞熱點
疑難解答