鍍金池/ 問答/Java  Linux/ 生產(chǎn)環(huán)境如何重啟tomcat,直接殺進(jìn)程有弊端沒有?

生產(chǎn)環(huán)境如何重啟tomcat,直接殺進(jìn)程有弊端沒有?

如果直接殺掉tomcat進(jìn)程,那么一些listener的contextDestroyed方法就沒有機會執(zhí)行了吧?這樣就有邏輯漏洞了吧

回答
編輯回答
菊外人

如果是系統(tǒng)安裝,可以直接用服務(wù)管理腳本進(jìn)行管理,
如ubuntu下/etc/init.d/tomcat8
使用命令

$ sudo service tomcat8 restart

腳本內(nèi)容如下:

 stop)
log_daemon_msg "Stopping $DESC" "$NAME"

set +e
if [ -f "$CATALINA_PID" ]; then 
start-stop-daemon --stop --pidfile "$CATALINA_PID" \
--user "$TOMCAT8_USER" \
--retry=TERM/20/KILL/5 >/dev/null
if [ $? -eq 1 ]; then
log_progress_msg "$DESC is not running but pid file exists, cleaning up"
elif [ $? -eq 3 ]; then
PID="`cat $CATALINA_PID`"
log_failure_msg "Failed to stop $NAME (pid $PID)"
exit 1
fi
rm -f "$CATALINA_PID"
rm -rf "$JVM_TMP"
else
log_progress_msg "(not running)"
fi
log_end_msg 0
set -e
;;

基本的思路是先用start-stop-daemon發(fā)停止信號給tomcat進(jìn)程, 如果進(jìn)程不能順利結(jié)束,再用kill殺掉. 這里TERM/20/KILL/5意思是先發(fā)送TERM信號20秒沒有結(jié)束接著發(fā)送KILL信號,超時時間為5秒.
如果你自己管理,也可以參考上面腳本來完成.

2018年5月25日 23:09
編輯回答
兔囡囡

最好盎然是通過shell關(guān)閉,不要直接kill -9

2017年2月15日 23:35