Tomcat重啟腳本restart.sh停止腳本stop.sh


Tomcat重啟腳本restart.sh停止腳本stop.sh

Tomcat本身提供了 startup.sh(啟動)shutdown.sh(關閉)腳本,我們在部署中經常會出現死進程形象,無法殺掉進程需要查詢進程號kill掉才能正常啟動。
通過restart.sh腳本來解決這個問題比較好。

PS:經過后期的使用和驗證之前寫的腳本還是存在問題,可以看我重新寫的一篇文章,參考這個可以比較好的解決問題

完美解決Linux服務器tomcat開機自啟動問題 - 流風,飄然的風 - 博客園
http://www.cnblogs.com/zdz8207/p/linux-tomcat-autostartup.html

# 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

 ----------------------

下面是進過改進版的restart.sh

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

echo "TOMCAT_PATH is $TOMCAT_PATH"

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

if [ -n "$PID" ]; then
    echo "Will shutdown tomcat: $PID"
    $TOMCAT_PATH/shutdown.sh -force
    sleep 5
else echo "No Tomcat Process $PID"
fi

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

$TOMCAT_PATH/startup.sh

sleep 50

for((i=1;i<5;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 50
    fi
done

 

----------------------------------------
2.腳本
注意:一台服務器如果運行多個tomcat實例,不要配環境變量,容易啟動錯誤,除了端口變換外,
restart.sh腳本#{tomcat目錄}命名要區別,不然kill掉所有tomcat進程
TOMCAT_PATH為tomcat的bin目錄,前后不能有反引號
---------------------
restart.sh
---------------------
#!/bin/sh
TOMCAT_PATH=#{tomcat目錄}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
sh "$TOMCAT_PATH/shutdown.sh"
sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
kill -9 $PID2
echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

sh "$TOMCAT_PATH/startup.sh"
sleep 3

PID=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "\nRestart tomcat successfully!"
else
echo "\nFail to startup tomcat"
exit 1
fi

#!/bin/sh
TOMCAT_PATH=#{tomcat目錄}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
        echo "Will kill tomcat: $PID"
        sh "$TOMCAT_PATH/shutdown.sh"
        sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
        kill -9 $PID2
        echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

sh "$TOMCAT_PATH/startup.sh"
sleep 3

PID=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
        echo "\nRestart tomcat successfully!"
else
        echo "\nFail to startup tomcat"
        exit 1
fi

 


===================================
停止腳本stop.sh
-------------------------
#!/bin/sh
TOMCAT_PATH=#{tomcat目錄}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
sh "$TOMCAT_PATH/shutdown.sh"
sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
kill -9 $PID2
echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

#!/bin/sh
TOMCAT_PATH=#{tomcat目錄}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
        echo "Will kill tomcat: $PID"
        sh "$TOMCAT_PATH/shutdown.sh"
        sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep #{tomcat目錄} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
        kill -9 $PID2
        echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

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

創建文件后需要給執行權限
chmod +x restart.sh
chmod +x stop.sh
或者設置成777等權限
重啟tomcat時到bin目錄下執行./restart.sh 就可以了

===================================
在window本地編輯sh上傳可能遇到下面問題,需要解決編碼問題
最好的辦法是直接使用vi或vim命令創建文件,把內容粘帖進去

錯誤1.Linux執行.sh文件,提示No such file or directory的問題的解決方法

錯誤2.bin/sh^M: bad interpreter: No such file or directory解決方法

原因是.sh腳本在windows系統下用記事本文件編寫的。不同系統的編碼格式引起的。
1.利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盤退出)

2.最好的辦法是直接使用vi或vim命令創建文件,把內容粘帖進去

==================================
[root@iZwz96l7gxttha3j1hk494Z bin]# ./restart.sh
./restart.sh: line 1: #!/bin/sh: No such file or directory
./restart.sh: line 2: #{tomcat目錄}/bin: is a directory
TOMCAT_PATH is
No Tomcat Process

 

 


免責聲明!

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



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