【java】windows上使用bat脚本后台启动,停止和重启jar包服务

本文介绍如何在Windows环境下利用BAT批处理脚本实现JAR应用程序的启动、停止及重启操作,包括设置端口号并查找并终止占用指定端口的进程。
该文章已生成可运行项目,

前提:windows上安装jdk 

用txt新建一个后缀为bat文件

1.启动jar脚本

@echo off
START "app" javaw -jar app-0.0.1-SNAPSHOT.jar

2.停止jar脚本(如:jar包端口9090)

@echo off
set port=9090
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
    echo kill the process %%m who use the port 
    taskkill /pid %%m -t -f
    goto q
)
:q

3.重启jar脚本(就是上面两个合起来)

@echo off
set port=9090
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
    echo kill the process %%m who use the port 
    taskkill /pid %%m -t -f
    goto start
)
:start

START "app" javaw -jar app-0.0.1-SNAPSHOT.jar

参考地址:windows – 通过从.BAT查找正在使用的端口来终止进程(转) - 简书

本文章已经生成可运行项目
### 创建 Windows bat 脚本启动并实现 jar 的自动重启Windows 环境下,可以通过编写 bat 脚本来实现 Javajar 启动、监控自动重启功能。以下是实现自动重启的完整解决方案,结合了对端口监控、进程终止以及 jar 重新启动的逻辑。 #### 1. 自动重启脚本实现 以下是一个完整的示例脚本,用于实现 jar 的自动重启。该脚本会检查指定端口是否被占用,如果被占用则终止占用进程,随后重新启动 jar 。 ```bat @echo off setlocal :: 设置 jar 名称监听的端口 set JAR_NAME=app-0.0.1-SNAPSHOT.jar set PORT=8080 :: 查找占用端口的进程并终止 for /f "tokens=1-5" %%i in ('netstat -ano ^| findstr ":%PORT%"') do ( echo 正在终止占用端口 %PORT% 的进程 PID: %%m taskkill /pid %%m -t -f ) :: 启动 jar echo 正在启动 %JAR_NAME% START "JavaApp" javaw -jar %JAR_NAME% :: 监控 jar 运行状态并实现自动重启 :monitor timeout /t 10 >nul :: 检查进程是否存在 tasklist | findstr /i "javaw" >nul if %ERRORLEVEL% NEQ 0 ( echo Java 进程已停止,正在重新启动... START "JavaApp" javaw -jar %JAR_NAME% ) goto monitor ``` #### 2. 脚本功能说明 - **端口检查与进程终止**:脚本首先检查指定端口(如 `8080`)是否被占用,如果被占用则终止对应的进程。 - **启动 jar **:使用 `START` 命令启动 jar ,并指定窗口名称(如 `JavaApp`)。 - **监控与自动重启**:通过 `tasklist` 命令检查 `javaw` 进程是否仍然运行。如果发现进程终止,则自动重新启动 jar [^5]。 #### 3. 设置开机自动运行 为了实现开机自动运行该脚本,可以将 bat 文件放入 Windows启动目录中: 1. 打开路径 `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp`。 2. 将脚本文件复制到该目录下,系统会在开机时自动执行脚本 [^3]。 #### 4. 后台运行与日志记录 如果需要将 jar 的输出日志记录到文件中,可以在启动命令中添加日志重定向: ```bat START "JavaApp" javaw -jar %JAR_NAME% > app.log 2>&1 ``` 此命令将标准输出错误输出重定向到 `app.log` 文件中,方便后续排查问题 [^2]。 #### 5. 优化脚本以避免无限重启 为了避免脚本jar 频繁崩溃时导致无限重启,可以添加重启次数限制: ```bat set RESTART_COUNT=0 :max_restarts if %RESTART_COUNT% GTR 5 ( echo 已超过最大重启次数,停止自动重启。 exit /b ) :: 启动 jar START "JavaApp" javaw -jar %JAR_NAME% set /a RESTART_COUNT+=1 :: 监控 jar 状态 :monitor timeout /t 10 >nul tasklist | findstr /i "javaw" >nul if %ERRORLEVEL% NEQ 0 ( echo Java 进程已停止,正在进行第 %RESTART_COUNT% 次重启... goto max_restarts ) goto monitor ``` 此版本限制了最大重启次数为 5 次,防止脚本无限循环重启。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿来小同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值