Tomcat怎么重启?Linux和Windows下Tomcat重启命令详解

来源:建站教程作者:沈清秋头衔:网络博主
导读:本期聚焦于沈清秋创作的《Tomcat怎么重启?Linux和Windows下Tomcat重启命令详解》,敬请观看详情。Tomcat部署应用后改了配置文件不生效,十有八九是需要重启才能加载。本文围绕Tomcat重启这一高频操作,系统讲解Linux下的shutdown.sh与startup.sh、Windows下的shutdown.bat与startup.bat,以及catalina.sh stop和catalina.sh start的用法。同时介绍强制结束Tomcat进程的kill命令、如何确认Tomcat是否真正关闭、重启后验证服务状态的方法,还会分析shutdown端口被占用导致关不掉、重启后端口冲突等常见问题的排查思路,帮你把Tomcat重启这件事彻底搞明白。

Tomcat作为最常用的Java Web容器,几乎每个后端开发者都绕不开它。改了server.xml配置、更新了war包、调整了JVM参数,这些操作之后往往都需要重启Tomcat才能生效。但不少人对重启的理解只停留在“关掉再开”这个层面,遇到进程关不掉、重启后起不来、端口被占用等问题就手足无措。这篇文章就把Tomcat重启的完整知识梳理一遍,覆盖Linux和Windows两大平台,顺便把常见的坑也讲清楚。

Tomcat怎么重启?Linux和Windows下Tomcat重启命令详解

一、Linux下重启Tomcat的标准命令

在Linux环境下,Tomcat的重启依赖bin目录下的shell脚本。假设Tomcat安装在/usr/local/tomcat目录,进入bin目录后依次执行关闭和启动脚本即可完成一次重启:

cd /usr/local/tomcat/bin
./shutdown.sh
./startup.sh

shutdown.sh的本质是调用catalina.sh stop,它会连接Tomcat的shutdown端口(默认8005),发送SHUTDOWN指令让容器优雅退出。所谓优雅退出,是指Tomcat会先停止接收新请求,处理完已经在执行的请求,再依次销毁各个应用的Servlet上下文,最后释放资源退出进程。

startup.sh则调用catalina.sh start,它会在后台拉起一个JVM进程运行Tomcat。如果想在前台直接运行并实时观察日志输出,可以用catalina.sh run,这个命令会阻塞当前终端,日志直接打印在屏幕上,调试时特别有用。

两个命令也可以合并成一行执行,方便写成脚本:

/usr/local/tomcat/bin/shutdown.sh && sleep 5 && /usr/local/tomcat/bin/startup.sh

中间加一个sleep 5是给Tomcat留出关闭时间。如果shutdown.sh刚执行完立刻startup.sh,很可能出现旧进程还没退干净、新进程起不来的情况,这也是新手最容易踩的坑之一。

二、Windows下重启Tomcat的方式

Windows平台下的操作类似,只是脚本后缀换成了bat。进入Tomcat的bin目录,双击或在命令行中执行:

cd C:\tomcat\bin
shutdown.bat
startup.bat

shutdown.bat同样是通过shutdown端口发送停止指令,startup.bat会启动一个新的命令行窗口运行Tomcat,日志输出在这个窗口中。需要注意的是,如果直接点击startup.bat后把弹出的命令行窗口关掉,Tomcat进程也会跟着退出,这是Windows下Tomcat作为控制台程序运行的特性。

如果Tomcat是安装版并注册成了Windows服务,重启方式就不一样了。可以在“服务”管理界面中找到类似Apache Tomcat的服务项进行重启,也可以用命令行操作:

net stop Tomcat9
net start Tomcat9

服务名以实际注册的名称为准,可以在tomcat9w.exe的配置界面或者服务列表里查看。服务方式运行的好处是开机自启动、不依赖用户登录会话,生产环境的Windows服务器一般推荐这种部署形态。

三、Tomcat关不掉怎么办:强制结束进程

有时候执行完shutdown.sh,Tomcat并没有真正退出。常见原因有几个:应用中有非守护线程阻塞了JVM退出、应用的destroy方法执行很慢甚至死锁、shutdown端口配置异常导致指令发不出去。这时候需要先确认进程是否还在:

ps -ef | grep tomcat

如果输出中还能看到Tomcat的Java进程,说明关闭失败,需要强制结束:

kill -9 进程ID

进程ID就是ps输出中第二列的数字。kill -9属于强制终止,JVM没有任何善后的机会,正在处理的请求会被直接掐断,可能出现事务执行一半、临时文件残留等情况,所以它只能作为兜底手段,不能替代正常的shutdown脚本。

还有一种更彻底的批量处理写法,一行命令找出所有Tomcat进程并全部杀掉:

ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9

这里的grep -v grep是为了把grep命令自身从结果里过滤掉,否则可能误杀无关进程。Windows下对应的操作是在任务管理器中结束java.exe进程,或者用taskkill /f /pid 进程ID命令。

四、重启后的验证与常见问题排查

重启执行完不代表万事大吉,还需要验证服务是否真正起来了。最直接的方式是看日志,打开logs/catalina.out(Windows下是logs目录里的日志文件),观察启动耗时和是否有异常堆栈。看到类似“Server startup in xxxx ms”的日志,才说明启动成功。然后可以用curl或者浏览器访问一下应用地址确认响应正常:

curl -I http://127.0.0.1:8080

端口验证也很常用。8080是Tomcat默认的HTTP端口,8005是shutdown端口,8009是AJP端口。可以用netstat -anp | grep 8080查看端口是否处于监听状态。如果重启后起不来,报“Address already in use”,基本就是旧进程没死干净占着端口,回到上一节的方法清理进程即可。

另一个经典问题是shutdown端口冲突。如果一台服务器上跑了多个Tomcat实例,server.xml里的8005端口必须各不相同,否则第二个实例的shutdown指令会打到第一个实例上,或者shutdown端口被占用导致Tomcat压根起不来。多实例部署时建议同时规划好8080、8005、8009这三个端口,避免互相干扰。

最后提一个运维上的建议:生产环境的重启操作尽量留好回退手段,重启前确认配置文件备份无误,重启过程中持续盯日志。条件允许的话,把重启动作封装成带健康检查的脚本,启动后自动探测端口和应用状态,失败则回滚并告警,比手工敲命令可靠得多。

Tomcat重启Tomcat重启命令Linux关闭Tomcat修改时间:2026-09-10 12:26:31

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0910/54017.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。