windows服务器更新jar包脚本
【需求】Java每次发布新的版本都需要先kill掉原来的服务,然后再启动新的包 有了这个脚本只需要把包替换掉,服务会自动kill
以6001 为例 完整的脚本如下
@echo off
REM 检查端口 6001 是否被占用
netstat -ano | findstr :6001 > nul
IF %ERRORLEVEL% EQU 0 (
REM 如果端口被占用,查找并杀死进程
FOR /F "tokens=5" %%i in ('netstat -ano ^| findstr :6001') do (
echo Killing process with PID %%i
taskkill /PID %%i /F
)
)
REM 启动新的 Java 服务
java -jar admin.jar --spring.profiles.active=product
脚本解析:
netstat -ano | findstr :6001
:检查端口 6001 是否被占用。如果端口被占用,则返回进程信息。IF %ERRORLEVEL% EQU 0
:如果端口被占用,继续执行杀死进程的命令。FOR /F "tokens=5" %%i in ('netstat -ano ^| findstr :6001') do
:查找并获取占用端口的进程 ID(PID)。taskkill /PID %%i /F
:根据 PID 强制杀死进程。- 最后,启动新的 Java 服务:
java -jar admin.jar --spring.profiles.active=product
。