搜索
当前位置:首页 > 知识 > linux重启 tomcat

linux重启 tomcat

发表于 2026-10-17 06:02:17 来源:烟消火灭网

linux重启tomcat

直接说结论:重启tomcat最稳妥的方式不是kill -9,而是先找对进程,再走标准关闭流程。我见过太多人上来就pkill -9 java,结果tomcat的临时文件没清理,下次启动直接报端口占用或者session脏数据,够你折腾半小时。

第一步,找到tomcat的进程。别用ps aux | grep tomcat这种模糊匹配,容易把别的java进程也带出来。用ps -ef | grep catalina,或者更精确点,直接看你的tomcat目录下logs/catalina.out里记录的PID。如果你配置了catalina.pid,那更省事,cat /usr/local/tomcat/tomcat.pid一下就出来了。

拿到PID后,先试试温和关闭。进入tomcat的bin目录,执行./shutdown.sh。这时候别急着干别的,等个10秒左右,然后检查进程是否真的退了。ps -p 你的PID,如果没输出,说明正常退出。很多时候shutdown.sh会卡住,尤其是web应用里有非守护线程或者数据库连接池没释放。这时候再等5秒,还是不死,那没办法,只能kill -9 PID硬杀。硬杀之后有个关键动作——去tomcat的temp和work目录看看,有没有残留的锁文件或者缓存,有就删掉。尤其是work目录下的Catalina子目录,不清的话,下次部署新war包可能加载到旧class。

启动相对简单,./startup.sh,但启动完别立刻觉得万事大吉。我习惯先看日志,tail -f logs/catalina.out,至少等它出现“Server startup in [xxx] milliseconds”或者“Deployment of web application archive”之类的关键行。如果启动过程报错,比如端口被占、内存不足,日志里会直接告诉你原因。别傻等,日志是活的,盯着它走。

有个细节容易被忽略——重启前最好确认一下JAVA_HOME和CATALINA_HOME环境变量有没有被改动过。我遇到过几次,系统重启后/etc/profile里的路径没生效,startup.sh直接说找不到java命令。这种情况不是tomcat本身的问题,但你要是没排查到,会白白浪费十几分钟。

最后说个实用技巧:如果你经常重启tomcat,写个脚本吧。把stop、清理temp/work、start、tail日志这四步串起来,中间加个sleep 3保证进程完全退出。脚本别写太复杂,几行shell就够。我自己的脚本长这样:

 #!/bin/bash CATALINA_HOME=/usr/local/tomcat PID=$(cat $CATALINA_HOME/tomcat.pid 2>/dev/null) if [ -n "$PID" ] && kill -0 $PID 2>/dev/null; then $CATALINA_HOME/bin/shutdown.sh sleep 5 if kill -0 $PID 2>/dev/null; then kill -9 $PID sleep 2 fi fi rm -rf $CATALINA_HOME/work/* $CATALINA_HOME/bin/startup.sh tail -f $CATALINA_HOME/logs/catalina.out 

这段代码糙是糙了点,但胜在直接。你照着改改路径就能用。别嫌糙,线上环境稳定比优雅重要。

重启这事,说白了就三步——停干净、清残留、起利索。停不干净就清不彻底,清不彻底就起不顺利。环环相扣,每一步都别偷懒。你要是图省事直接kill -9然后startup.sh,那等于把隐患留给下一次重启。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by linux重启 tomcat,烟消火灭网   sitemap

回顶部