完美解決Linux服務器tomcat開機自啓動問題

原文鏈接:https://www.cnblogs.com/zdz8207/p/linux-tomcat-autostartup.html

經過多次測試終於徹底解決tomcat開機自啓動的問題了

PID3=`ps aux | grep /home/server/shichuan/ | grep java | awk '{print $2}'`

if [ -n "$PID3" ]; then
這個判斷pid的方式還是可能出現啓動失敗的情況
# tail -n 1 /home/server/shichuan/logs/catalina.out |grep 'INFO: Server startup in'
INFO: Server startup in 37417 ms
這個纔是真正的啓動成功,由於是用autostart的方式會先執行停止後啓動,一定不會重新最後一行是之前啓動成功留下來的
啓動成功需要40秒左右,應該先sleep 足夠長的時間再檢測,否則會出現啓動多個tomcat進程的問題
一次性殺掉多個tomcat進程命令:
ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh

$TOMCAT_PATH/startup.sh

sleep 60

for((i=1;i<10;i++))
do
LASTINFO=`tail -n 1 /home/server/shichuan/logs/catalina.out |grep 'INFO: Server startup in'`
if [ -n "$LASTINFO" ]; then
break
else
ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh
sleep 1
$TOMCAT_PATH/startup.sh
sleep 60
fi
done

設置權限:chmod 777 autostart.sh

在/etc/rc.d/rc.local中加入腳本:
vim /etc/rc.local
/home/server/shichuan/bin/autostart.sh
保存並退出,下次重啓會生效。

============================

ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java
ps aux | grep /home/server/shichuan/ | grep java | awk '{print $2}'
ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'
ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh


ps -ef | 獲取當前服務器所有進程
grep -v grep 相當於grep自己吧自己過濾掉,就是不顯示grep
grep /home/server/shichuan/ | grep java 過濾出包含這些內容,即過濾出對應的pid
awk 截取 $2 第二個域的pid號。通過調用外部命令kill 來幹掉
|sh 把前面print輸出的內容作爲命令執行

===========================

其他相關命令:

service nginx restart
ls -lh /home/server/shichuan/bin/autostart.sh
cd /home/server/shichuan/bin/

vim /home/server/shichuan/bin/autostart.sh

tail -f /home/server/shichuan/logs/catalina.out

===========================

 下面是autostart.sh的內容:

#!/bin/sh
TOMCAT_PATH=/home/server/shichuan/bin

ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh
sleep 10

$TOMCAT_PATH/startup.sh

sleep 60

for((i=1;i<10;i++))
do
    LASTINFO=`tail -n 1 /home/server/shichuan/logs/catalina.out |grep 'INFO: Server startup in'`
    if [ -n "$LASTINFO" ]; then
        break
    else
        ps -ef|grep -v grep|grep /home/server/shichuan/ | grep java |awk '{print "kill -9 "$2}'|sh
        sleep 1
        $TOMCAT_PATH/startup.sh
        sleep 60
    fi
done

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章