1. 程式人生 > >tomcat啟動產生多個java程序

tomcat啟動產生多個java程序

問題連結 https://www.oschina.net/question/2402835_2308799 

找到的解決方式

1、在tomcat/bin/shutdown.sh檔案中增加一個引數

在檔案最後一行的命令新增一個force exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
2、在tomcat/bin/catalina.sh腳中,加入下面這三行

在這一行後面   PRGDIR=`dirname "$PRG"`

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

3、在tomcat/bin/下面新建setenv.sh檔案,檔案內容如下:

#!/bin/bash
CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID

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

猜測原因如下:

linux的執行緒是通過程序實現的。 2.6核心32位系統上 gcc -static編譯出來的程式 會讓多執行緒表現成多程序的狀態,出現同名多個PID 不帶-static就表現為只有一個PID 64位系統,不管加不加-static,都只有一個PID 感覺32位和64位線上程的實現不一樣。

歡迎各路大神解惑

以下為解決問題中發現的有價值的帖子。

偶爾發現linux下tomcat啟動後出現多個java程序,如下: 000 S     0  4789     1  0  85   0    - 75083 schedu pts/1    00:00:03 java 040 S     0  4790  4789  0  75   0    - 75083 schedu pts/1    00:00:00 java 040 S     0  4791  4790  0  75   0    - 75083 schedu pts/1    00:00:03 java 040 S     0  4792  4790  0  75   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4793  4790  0  75   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4794  4790  0  78   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4795  4790  0  75   0    - 75083 rt_sig pts/1    00:00:02 java 040 S     0  4796  4790  0  78   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4797  4790  0  75   0    - 75083 schedu pts/1    00:00:00 java 040 S     0  4802  4790  0  75   0    - 75083 schedu pts/1    00:00:00 java 040 S     0  4803  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4804  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4805  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4806  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4807  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4808  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4809  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4810  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 大概有40多個,感覺好恐怖,在網上查了半天也沒有什麼結果,只是發現了主程序子程序的關係。 和做C的同事討論後,他說發現mysql也有類似情況: PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  6238 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.30 mysqld  6239 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6240 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6241 mysql     24   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6242 mysql     24   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6243 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6245 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.01 mysqld 後來查mysql多程序的時候有高手回答如下: 原來如此啊,linux的執行緒是通過程序實現的。 2.6核心32位系統上 gcc -static編譯出來的程式 會讓多執行緒表現成多程序的狀態,出現同名多個PID 不帶-static就表現為只有一個PID 64位系統,不管加不加-static,都只有一個PID 感覺32位和64位線上程的實現不一樣
--------------------- 
作者:winderain 
來源:CSDN 
原文:https://blog.csdn.net/winderain/article/details/2592619 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

1、在tomcat/bin/shutdown.sh檔案中增加一個引數

在檔案最後一行的命令新增一個force exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"


2、在tomcat/bin/catalina.sh腳中,加入下面這三行

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


3、在tomcat/bin/下面新建setenv.sh檔案,檔案內容如下:

#!/bin/bash
CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID
--------------------- 
作者:腳踏一方土 
來源:CSDN 
原文:https://blog.csdn.net/Diaochengrui1989/article/details/81669372 
版權宣告:本文為博主原創文章,轉載請