在windows下使用tomcat有時(shí)候很糟心,因?yàn)槭褂胻omcat下自帶的批處理腳本很慢,如果不上熱部署,那么改一點(diǎn)重啟一點(diǎn),非常糟心。當(dāng)然,還是建議上熱部署。
下面是之前開(kāi)發(fā)的過(guò)程中找到的一個(gè)極好的辦法。適用情況tomcat8,端口8080(端口在腳本可以改)。當(dāng)然,建議安裝tomcat的時(shí)候選擇exe的安裝,一方面,夠簡(jiǎn)單,而且直接會(huì)把環(huán)境變量添加到windows下,免去了配置的麻煩;另一方面,用我下面的腳本會(huì)非常方便,直接殺死tomcat進(jìn)程,啟動(dòng)關(guān)閉再也不用等了。哈哈哈哈哈哈....
- 關(guān)閉tomcat進(jìn)程
@echo off
REM ________________________________獲取管理員權(quán)限________________________________
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM 判斷是否具有管理員權(quán)限
if '%errorlevel%' NEQ '0' (
REM 若沒(méi)有取管理員權(quán)限
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"
REM __________________________________關(guān)閉tomcat8080端口______________________________
REM 關(guān)閉tomcat的8080端口
setlocal enabledelayedexpansion
for /f "tokens=5 delims= " %%a in ('netstat -aon ^| findstr "8080"') do (
set a=%%a
)
taskkill /pid !a! /f && goto 1 || goto 2
:1
echo "tomcat 關(guān)閉成功"
pause>nul
exit
:2
echo "tomcat 關(guān)閉失敗,請(qǐng)使用管理員權(quán)限運(yùn)行"
pause>nul
exit
- 啟動(dòng)tomcat進(jìn)程
@echo off
REM ________________________________________________________________
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM 判斷是否具有管理員權(quán)限
if '%errorlevel%' NEQ '0' (
REM 若沒(méi)有取管理員權(quán)限
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"
REM ________________________________________________________________
net start tomcat8
pause & exit
- 附上windows相關(guān)dos命令
查詢所有的端口被占用的情況
netstat -ano
查詢端口號(hào)所對(duì)應(yīng)的PID,以8080為例
netstat -ano | findstr "8080"
根據(jù)查詢的PID找到對(duì)應(yīng)的進(jìn)程
tasklist|findstr "5264"
刪除對(duì)應(yīng)的PID(有的需要管理員權(quán)限)
taskkill /f /pid "進(jìn)程號(hào)"
結(jié)束某個(gè)進(jìn)程
taskkill /f /t /im tor.exe