运行shutdown.sh,tomcat停止, 但它的java进程还在, 不过状态为S(sleep), 不是运行时的R(Runnable), 如果不kill的话, 这种进程越来越多,导致JVM进程越来越多, 占据了大量的内存空间, 有可能使得新程序在启动JVM时由于内存不够用而无法启动。

kill强制杀死进程

1
ps -ef|grep java

若显示以下内容代表使用的java进程还存在,没有完全停止

1
2
3
4
5

root     50530     1 99 10:25 pts/0    00:00:45 /usr/local/java/jdk1.7.0_51/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-7.0.92/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/apache-tomcat-7.0.92/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-7.0.92/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/apache-tomcat-7.0.92 -Dcatalina.home=/usr/local/tomcat/apache-tomcat-7.0.92 -Djava.io.tmpdir=/usr/local/tomcat/apache-tomcat-7.0.92/temp org.apache.catalina.startup.Bootstrap start

root     50934 48933  0 10:26 pts/0    00:00:00 grep --color=auto java

使用kill命令,杀死进程

1
kill -9 50530 #50530为进程id

tomcat 解决

在tomcat/bin/shutdown.sh文件中增加一个参数

1
2
3
exec "$PRGDIR"/"$EXECUTABLE" stop "$@"  #原来的

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@" #增加参数后

在tomcat/bin/catalina.sh脚中,加入下面这三行

1
2
3
4
5
6
7
if [ -z "$CATALINA_PID" ]; then

    CATALINA_PID=$PRGDIR/CATALINA_PID

    cat $CATALINA_PID

fi