tomcat在windows下可以直接关闭,但是貌似在Linux下有时候shutdown.sh 没有关闭tomcat进程;国庆前最后一天没事,解决你~~~~

现象:

在Linux下shutdown.sh ,然后查看tomcat进程发现没有完全关闭;

#查看tomcat进程是否关闭语句
ps -ef | grep tomcat

实验:(为什么原来在Linux下没有发现这个问题呢???)

实验一:

  安装一个纯净的tomcat放在linux上,启动—>查看tomcat进程—>关闭–>查看tomcat进程。。。。。。。。。。。发现关闭后没有tomcat的进程啊啊啊

实验二:

  将项目丢进tomcat, 启动—> 查看进程—> 关闭—> 查看进程。。。。。。。。tomcat的进程还在!!!!!!

  网上查找出来解释:一般造成这种原因是因为项目中有非守护线程的存在(关于守护线程阅读下面文章)

  java的守护线程与非守护线程

  JAVA并发编程——守护线程(Daemon Thread)


解决:

  两个思路,1、从程序上根本解决。 2、从tomcat上解决

一: 从程序上解决(要求较高,项目底层代码的修改)

  在项目中找到对应new Thread的地方setDaemon(true),后面shutdown就没有tomcat进程了;

二: 从tomcat解决

  • 解决方案一:
#查找到所有的tomcat进程

$ ps -ef | grep tomcat

#然后逐一杀死它们

$ ps -9 pid
  • 解决方案二:

$ kill -9 `ps -ef|grep tomcat|awk '{print $2}'`
  • 解决方案三:

  基本原理为启动tomcat时记录启动tomcat的进程id(pid),关闭时强制杀死该进程

 第一步 :vim修改tomcat下bin/catalina.sh文件,添加点东西,主要是记录tomcat的pid,如下:
#设置记录CATALINA_PID。

#该设置会在启动时候bin下新建一个CATALINA_PID文件

#关闭时候从CATALINA_PID文件找到pid,kill。。。同时删除CATALINA_PID文件

if [ -z "$CATALINA_PID" ]; then

      CATALINA_PID=$PRGDIR/CATALINA_PID

fi

第二步 vim tomcat的shutdown.sh文件,在最后一行加上-force:

方案三是最适合的(因为一台机器里可能有很多tomcat,不能kill所有吧)


验收结果:

启动tomcat,看到使用了CATALINA_PID

关闭tomcat,看到使用CATALINA_PID,kill了tomcat进程,同时删除了CATALINA_PID文件

查看tomcat进程,,,,无~~~~

linux下tomcat的shutdown命令杀不死进程的更多相关文章

  1. 转 解决linux下tomcat的shutdown命令杀不死进程

    tomcat在windows下可以直接关闭,但是貌似在Linux下有时候shutdown.sh 没有关闭tomcat进程; 现象:在Linux下shutdown.sh ,然后查看tomcat进程发现没 ...

  2. Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程

    Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程 原因: 一般造成这种原因是因为项目中有非守护线程的存在: 解决方案: 一.从Tomcat上解决 方案1:(推荐的方案:因为一台 ...

  3. Linux 下Tomcat的启动、关闭、杀死进程

    Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat ...

  4. linux下tomcat相关的命令

    1.查看Tomcat是否以关闭 ps -ef|grep tomcat 2.直接干掉Tomcat可以使用kill命令,直接杀死Tomcat进程(这个命令用在当你关闭tomcat报错的时候直接杀死进程) ...

  5. Linux下Tomcat启动关闭命令

    1.首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 2.查看Tomcat是否以关闭 ps -ef|grep tomcat 如果显示以下信息,说明Tomcat还没 ...

  6. linux下不能使用shutdown命令

    命令查看:  #echo $PATH     /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/sbin;/ ...

  7. Linux下Tomcat的启动、关闭、杀死进程

    打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.ou ...

  8. linux下tomcat服务的相关命令

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

  9. Linux下tomcat服务

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

随机推荐

  1. 读取Devexpress内部的图标

    1.图标在Dev源码的存储路径: Sources D.x.u 15.1.3\DevExpress.Images\Images   2.引用DevExpress.Images.v15.1.dll文件,代 ...

  2. UIFont的常用字体

    + (UIFont *)systemFontOfSize:(CGFloat)fontSize;   系统默认字体 + (UIFont *)boldSystemFontOfSize:(CGFloat)f ...

  3. DOM和DHTML等,复习总结

    DOM(Document Object Model),文件对象模型.HTML(HyperText Markup Language),超文本标记语言.HTML的超类:Node->Document: ...

  4. 读书笔记 --TCP :传输控制协议(二)

    TCP建立连接 请求端(客户端)发送一个SYN指明客户端打算连接的服务器端口号,以及初始序列号. 服务端发回包含服务器的初始序号的SYN报文段作为应答.同时,将确认序号设置为客户的ISN加1以对客户的 ...

  5. oracle迁移postgres之-Ora2Pg

    描述 Ora2Pg:甲骨文PostgreSQL数据库模式转换器是一个免费的工具用于Oracle数据库迁移到PostgreSQL兼容模式.它连接Oracle数据库,扫描它自动提取其结构或数据,然后生成S ...

  6. 将光标放到input内容的最后

    在使用setSelectionRange方法的时候一定要加setTimeout,否则无效,代码 var num = $('#input_phone').val().length; setTimeout ...

  7. Linux内核分析:打开文件描述符实现

    在Linux中每一个进程的数据是存储在一个task_struct结构(定义在sched.h中)中的. struct task_struct { volatile long state; /* -1 u ...

  8. 【转】UML类图与类的关系详解

    UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...

  9. 怎样处理“error C2220: warning treated as error - no object file generated”错误

    最近用VS2010 编译ceflib开源库是出现"怎样处理"error C2220: warning treated as error - no object file gener ...

  10. iOS的多版本配置(版本分离,多环境配置)

    前几天公司说一个客户要搞一个app,我说搞呗,跟我啥关系...他说,就是从咱的app上搞,什么都一样,就是一些logo啥的不一样.我一开始感觉,那就改改logo呗,后来一想,凑,百度推送,友盟统计,B ...