轉 解決linux下tomcat的shutdown命令殺不死進程

tomcat在windows下能夠直接關閉,可是貌似在Linux下有時候shutdown.sh 沒有關閉tomcat進程;html

現象:在Linux下shutdown.sh ,而後查看tomcat進程發現沒有徹底關閉;java

  1. #查看tomcat進程是否關閉語句
  2. ps -ef | grep tomcat

實驗:(爲何原來在Linux下沒有發現這個問題呢???)linux

實驗一:編程

  安裝一個純淨的tomcat放在linux上,啓動—>查看tomcat進程—>關閉–>查看tomcat進程。。。。。。。。。。。發現關閉後沒有tomcat的進程啊啊啊windows

實驗二:tomcat

  將項目丟進tomcat, 啓動—> 查看進程—> 關閉—> 查看進程。。。。。。。。tomcat的進程還在!!!!!!併發

  網上查找出來解釋:通常形成這種緣由是由於項目中有非守護線程的存在(關於守護線程閱讀下面文章)spa

  java的守護線程與非守護線程線程

  JAVA併發編程——守護線程(Daemon Thread)code


解決:

  兩個思路,一、從程序上根本解決。 二、從tomcat上解決

一: 從程序上解決(要求較高,項目底層代碼的修改)

  在項目中找到對應new Thread的地方setDaemon(true),後面shutdown就沒有tomcat進程了;

二: 從tomcat解決

  • 解決方案一:
  1.   #查找到全部的tomcat進程
  2.   $ ps -ef | grep tomcat 
  3.   #而後逐一殺死它們
  4. kill -9  pid 殺死進程
相關文章
相關標籤/搜索