在停止tomcat运行,一般普遍会选择bin目录下shutdown.sh,但实际情况会导致tomcat无法停止。原因Tomcat启动以后,会启动6条线程:
"ajp-bio-8009-AsyncTimeout" daemon prio=5 tid=7f8738afe000 nid=0x115ad6000 waiting on condition [115ad5000] "ajp-bio-8009-Acceptor-0" daemon prio=5 tid=7f8738b05800 nid=0x1159d3000 runnable [1159d2000] "http-bio-8080-AsyncTimeout" daemon prio=5 tid=7f8735acb800 nid=0x1158d0000 waiting on condition [1158cf000] "http-bio-8080-Acceptor-0" daemon prio=5 tid=7f8735acd000 nid=0x1157cd000 runnable [1157cc000] "ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=5 tid=7f8732850800 nid=0x111203000 waiting on condition [111202000] "main" prio=5 tid=7f8735000800 nid=0x10843e000 runnable [10843c000]其中5条是Dameon线程,而tomcat下shutdown时,并非将main这条Dameon线程终止,而是在配置的端口上通过ServerSocket来监听一个请求的到来,如果请求的字符串和配置的字符串相同的话即跳出循环,这样的话就会运行stop方法,运行完了以后,main线程就退出了。
问题解决,无需kill
PS:首先必须先创建pid文件目录