linux下tomcat的shutdown命令杀不死进程
tomcat在windows下可以直接关闭,但是貌似在Linux下有时候shutdown.sh 没有关闭tomcat进程;国庆前最后一天没事,解决你
~~~~
现象:
在Linux下shutdown.sh ,然后查看tomcat进程发现没有完全关闭;
#查看tomcat进程是否关闭语句
ps -ef | grep tomcat
实验:(为什么原来在Linux下没有发现这个问题呢???)
实验一:
安装一个纯净的tomcat放在linux上,启动—>查看tomcat进程—>关闭–>查看tomcat进程。。。。。。。。。。。发现关闭后没有tomcat的进程啊啊啊
实验二:
将项目丢进tomcat, 启动—> 查看进程—> 关闭—> 查看进程。。。。。。。。tomcat的进程还在!!!!!!
网上查找出来解释:一般造成这种原因是因为项目中有非守护线程的存在(关于守护线程阅读下面文章)
解决:
两个思路,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命令杀不死进程的更多相关文章
- 转 解决linux下tomcat的shutdown命令杀不死进程
tomcat在windows下可以直接关闭,但是貌似在Linux下有时候shutdown.sh 没有关闭tomcat进程; 现象:在Linux下shutdown.sh ,然后查看tomcat进程发现没 ...
- Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程
Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程 原因: 一般造成这种原因是因为项目中有非守护线程的存在: 解决方案: 一.从Tomcat上解决 方案1:(推荐的方案:因为一台 ...
- Linux 下Tomcat的启动、关闭、杀死进程
Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat ...
- linux下tomcat相关的命令
1.查看Tomcat是否以关闭 ps -ef|grep tomcat 2.直接干掉Tomcat可以使用kill命令,直接杀死Tomcat进程(这个命令用在当你关闭tomcat报错的时候直接杀死进程) ...
- Linux下Tomcat启动关闭命令
1.首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 2.查看Tomcat是否以关闭 ps -ef|grep tomcat 如果显示以下信息,说明Tomcat还没 ...
- linux下不能使用shutdown命令
命令查看: #echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/sbin;/ ...
- Linux下Tomcat的启动、关闭、杀死进程
打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.ou ...
- linux下tomcat服务的相关命令
一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...
- Linux下tomcat服务
一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...
随机推荐
- ImageLoader加载图片
先导universal-image-loader-1.9.3包 在application配置 android:name=".MyApplication" intent权限 1 pa ...
- 2013ACM/ICPC亚洲区南京站现场赛-HDU4809(树形DP)
为了这个题解第一次写东西..(我只是来膜拜爱看touhou的出题人的).. 首先以为对称性质..我们求出露琪诺的魔法值的期望就可以了..之后乘以3就是答案..(话说她那么笨..能算出来么..⑨⑨⑨⑨⑨ ...
- SQL SERVER 数据库备份的三种策略及语句
1.全量数据备份 备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...
- linux的mount(挂载)命令详解
本文介绍mount命令的用法,以及技巧光盘镜像文件.移动硬盘及U盘的方法. 挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用 ...
- PHP 微信分享
share.php <?php //公众号设置一下 JS接口安全域名,不要http,www的一级域名,比如http://www.baidu.com域名下的某个路径要分享,js安全域名中只需填上 ...
- C++内存泄露之野指针
写出本文仅仅是处于备忘的目的. 最近为现在做的软件添加了一个内存回收机制(以前处于某种内存只申请不释放,这并不等于内存泄露,因为我们知道这些内存块在内存中的位置)-- 在某一块内存不使用的时候将其释放 ...
- linq+映射数据库调用方法
关于这一块.我在网上了解了很多.但是都没有找到自己想要的.通过各方面了解在linq 中调用映射的数据库函数以及存储过程方法如下. 1.传递对象参数//*注意:参数必须和你函数或者存储过程的参数一样 ...
- 深入分析ClassLoader
首先介绍下ClassLoader: ClassLoader顾名思义就是类加载器,负责将Class加载到JVM中,事实上ClassLoader除了能将Class加载到JVM中之外,还有一个重要的作用就是 ...
- Android开发工具类
7种无须编程的DIY开发工具 你知道几个? 现如今,各种DIY开发工具不断的出现,使得企业和个人在短短几分钟内就能完成应用的创建和发布,大大节省了在时间和资金上的投入.此外,DIY工 具的出现,也帮助 ...
- javascript各种宽高
参考: http://www.w3cschool.cc/jsref/dom-obj-all.html http://www.cnblogs.com/wen12128/archive/2012/05/2 ...