以下腳本:
#Tomcat status
tc_status () {
ps aux | grep myapp123 | wc -l
}
#shutdown, if tomcat
if [ $(tc_status) -gt 0 ]; then
echo "Stopping Tomcat "; /home/user/shutdown.sh myapp123 > /dev/null 2>&1;
if [ $(tc_status) -eq 0 ]; then
echo "OK!"
fi
fi
#some other code
#startup
echo "Starting Tomcat...";
/home/user/startup.sh myapp123 > /dev/null 2>&1;
if [ $(tc_status) -gt 0 ]; then
echo "OK!";
fi
上面的代碼首先檢查Tomcat是否還在運行。如果是,那么它將被停止,如果不是,則將執行更多的代碼行。
最后啟動Tomcat。如果它正在運行,則會顯示“OK”訊息。
此時的問題是狀態不是 100% 有意義的,尤其是在啟動時。因為Tomcat行程正在運行,但是Tomcat通常需要幾秒或幾分鐘的時間才能真正啟動。
如何確保 Tomcat 實際上是 DOWN 和 UP?
uj5u.com熱心網友回復:
如果您的發行版支持它,我建議您將您的服務放在 systemd 下。這樣你就可以使用“service”命令來監控它。做到這一點并不難。
我知道這并不能直接回答您的問題,但它可以讓您更好地控制正在運行和不運行的內容。
uj5u.com熱心網友回復:
你的腳本的不可靠性并不取決于 Tomcat 的啟動時間,而是取決于以下事實:
ps aux | grep app123 | wc -l
不可靠:它也匹配grep app123命令(盡管這受ps和之間的競爭條件的影響grep)。另一方面app123不是startup.sh腳本的有效引數。用法是:
startup.sh [ -config {pathname} ] [ -nonaming ] [ -generateCode [ {pathname} ] ] [ -useGeneratedCode ]
為了可靠地檢查 Tomcat 是否正在運行,您應該使用 pidfile,它將在CATALINA_PID環境變數指向的位置創建。
所以你的腳本應該是這樣的:
# Be sure to have permissions to create this file
export CATALINA_PID=/run/tomcat.pid
# Tomcat status
tc_status () {
[ -f $CATALINA_PID ] && kill -0 $(<$CATALINA_PID)
}
#shutdown, if tomcat
if [ $(tc_status) -gt 0 ]; then
echo "Stopping Tomcat ";
/home/user/shutdown.sh >/dev/null 2>&1;
if [ $(tc_status) -eq 0 ]; then echo "OK!"; fi
fi
#some other code
#startup
echo "Starting Tomcat...";
/home/user/startup.sh >/dev/null 2>&1;
if [ $(tc_status) -gt 0 ]; then echo "OK!"; fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360257.html
