Tomcat自带只有startup.bat和shutdown.bat实现启动、关闭功能,每次重启要点2次比较麻烦,于是想写一个重启脚本。
刚开始在批处理脚本内容简单写了如下:
call shutdown.bat
call startup.bat
试了几次,也把call换成start等,也有问题,因为关闭和启动需求一些时间,有可能shutdown.bat还没执行完,又执行startup.bat。
后来搜索了下,找到这遍文章:https://zhangge.NET/378.html
----------------------------------------------------------------------------------------------
Tomcat重启脚本,送给有需要的JSP环境运维同行们~
运行环境:XP/windows 2003测试通过,其他环境由于手头上条件限制未测试;
脚本功能:在常规调用tomcat自带的关闭/重启脚本中加入假死判断,若出现假死则予以强行Kill掉相关Java进程;
脚本特点:可在tomcat/Jboss/apache混合平台使用,针对性的只重启tomcat相关进程;
注意事项:就是注意tomcat环境变量是否正确即可。
@echo off title Tomcat重啟脚本 call "%tomcat_home%inshutdown.bat" ping -n 6 127.1 >nul wmic process where name="java.exe" get processid,commandline |findstr /i "tomcat" ># setlocal enabledelayedexpansion for /f "delims=*" %%i in (#) do ( set var=%%i set var=!var:start =#! for /f "tokens=2 delims=#" %%a in ("!var!") do ( set tomcatpid=%%a ) ) del # >nul if defined tomcatpid taskkill /pid !tomcatpid! ping -n 3 127.1 >nul call "%tomcat_home%instartup.bat" exit
----------------------------------------------------------------------------------------------
由于我电脑没配%tomcat_home%变量,所以我稍微修改了下,先cd定位到Tomcat的bin目录:
@echo off cd /d "D:javatoolapache-tomcatin" title Tomcat重啟脚本 call "shutdown.bat" ping -n 6 127.1 >nul wmic process where name="java.exe" get processid,commandline |findstr /i "tomcat" ># setlocal enabledelayedexpansion for /f "delims=*" %%i in (#) do ( set var=%%i set var=!var:start =#! for /f "tokens=2 delims=#" %%a in ("!var!") do ( set tomcatpid=%%a ) ) del # >nul if defined tomcatpid taskkill /pid !tomcatpid! ping -n 3 127.1 >nul call "startup.bat" exit
测试成功,能正常重启Tomcat。