91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux環境Tomcat不能被shutdown.sh正常關閉怎么辦

發布時間:2021-11-26 11:31:40 來源:億速云 閱讀:326 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Linux環境Tomcat不能被shutdown.sh正常關閉怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

問題分析

在Linux環境下,使用shutdown.sh腳本關閉Tomcat,經常會出現無法正常關閉的情況,使用ps -ef命令查看發現仍然有tomcat的進程。

查看linux日志以及源代碼,問題出在WebappClassLoaderBase中,此類為Context的類加載器父類,在容器關閉時,會調用其stop方法,stop方法會調用clearReferencesThreads方法

private boolean clearReferencesStopThreads = false;
private void clearReferencesThreads() {
        Thread[] threads = getThreads();
        List<Thread> executorThreadsToStop = new ArrayList<>();
        // Iterate over the set of threads
        for (Thread thread : threads) {
            if (thread != null) {
                       ...省略其他代碼...
                    // Don't try and stop the threads unless explicitly
                    // configured to do so
                    if (!clearReferencesStopThreads) {
                        continue;
                    }
                   ...省略其他代碼...     
    }

如果存在仍然運行的線程,根據代碼默認的配置,則不會進行任何處理,所以tomcat的進程仍然會存在。

解決方案

解決這個問題的思路為,通過kill命令強制殺掉進程,本文提供兩種方案。

1.自己編寫shell腳本

其思路為先查詢到tomcat的進程ID,然后殺掉進程,具體shell腳本如下:

#!/bin/bash
#TOMCAT_BASE為服務器上tomcat的bin目錄路徑
export TOMCAT_BASE=/usr/local/tomcat/7.0/bin
echo ' >>> deploy start'
#仍然先運行shutdown.sh腳本關閉tomcat
sh $TOMCAT_BASE/shutdown.sh
#查詢tomcat的進程ID,并殺掉該進程
pidList=$(ps aux | grep $TOMCAT_BASE | grep -v grep | awk '{print $2}')
for pid in $pidList
do
kill -9 $pid
echo 'kill pid '$pid
done
#啟動tomcat
sh $TOMCAT_BASE/startup.sh
echo ' >>> deploy end'

通過以上腳本,可以重啟Tomcat。此方式的風險在于查找tomcat的進程ID是否準確,但可以一并殺掉因人為操作shutdown.sh而未關閉的進程。

2.Tomcat預留的窗口

在Tomcat的catalina.sh中預留了該問題的處理窗口,需進行以下配置:

  1. 在bin目錄中創建文件,文件名為CATALINA_PID

  2. 在shutdown.sh中增加參數-force

    exec "$PRGDIR"/"$EXECUTABLE" stop -force  "$@"
  3. 在catalina.sh中最前面增加以下代碼,將變量$CATALINA_PID指向創建的CATALINA_PID文件,在Tomcat啟動時,會將進程ID存儲在這個文件中。

    if [ -z "$CATALINA_PID" ]; then
    CATALINA_PID=$PRGDIR/CATALINA_PID
    fi

感謝各位的閱讀!關于“Linux環境Tomcat不能被shutdown.sh正常關閉怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

简阳市| 雷波县| 海城市| 神农架林区| 桂林市| 盐源县| 微山县| 东乡县| 格尔木市| 广河县| 长垣县| 鄱阳县| 广宗县| 乐业县| 江阴市| 美姑县| 佛坪县| 山阴县| 兴国县| 江川县| 石景山区| 莱芜市| 信阳市| 舞阳县| 鸡东县| 荣昌县| 邹平县| 农安县| 曲沃县| 桃园市| 湄潭县| 禹城市| 卢龙县| 新龙县| 阜南县| 乌鲁木齐市| 荃湾区| 昭平县| 香港| 尉犁县| 邹平县|