当前位置:   article > 正文

window环境上使用bat脚本重启Tomcat服务。(非黑窗口启动),管理员身份启动bat脚本_windows服务器部署bat脚本自动检测重启挂掉的tomcat服务

windows服务器部署bat脚本自动检测重启挂掉的tomcat服务

在windows生可以使用脚本利用Tomcat的shutdown.bat和startup.bat脚本来重启Tomcat。但是有时候会一不小心关闭startup.bat窗口而引起的麻烦,说实话windows环境上部署服务器运行效率有点低。
先附上使用Tomcat自带脚本启动的bat脚本:

@echo off  
::cd /d "D:\java\Tomcat9\bin" 
cd /d "D:\java\Tomcat9\bin"  
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

解决方法:

将tomcat注册为windows上服务,这样就可以通过cmd窗口启动tomcat服务器,当关闭窗口时服务也会一直运行

前置条件:
Tomcat在windows上能正常运行。然后才可以进行以下步骤:

管理员运行cmd窗口。然后进入到Tomcat安装目录下的bin目录中,输入net start tomcat9或net start tomcat就可以运行tomcat服务了,窗口这回关闭了,tomcat服务器一会一直运行
停止tomcat服务输入net stop tomcat9命令

接下来就是写重启Tomcat的bat脚本了:

@echo off  

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::cd /d "D:\java\Tomcat9\bin" 
cd /d "D:\java\Tomcat9\bin" 
 
title Tomcat重新启动脚本 
net stop tomcat9
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
net start tomcat9
exit
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

到这里就大功告成了。

--------------------------------------补充-------------------------------------

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::cd /d "D:\java\Tomcat9\bin" 
cd /d "D:\java\Tomcat9\bin" 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

脚本中的这一段代码是让脚本命令以管理员身份运行。因为重启命令必须是管理员身份才可以。要不然会拒绝访问的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/941377
推荐阅读
相关标签
  

闽ICP备14008679号