问题链接 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
版权声明:本文为博主原创文章,转载请附上博文链接!