使用windows服务启动jar包并创建和设置自启bat文件后台定时监控服务状态

一、测试环境

1. 硬件环境

  1. 处理器(CPU):i7-7700HQ

  2. 显卡(GPU):GTX1050

2. 操作系统

  1. 版本:Windows 11 专业版 22H2

  2. 操作系统版本:22621.1778

2.软件环境

  1. JDK:jdk-8u371

二、详细流程

  • 默认文件夹:C:\test
  • 默认服务名称:TestService
  • 默认jar包名称:test-service-1.0.0.jar

1. 下载exe可执行文件

1) 将以下网址输入浏览器下载windows的可执行文件WinSW.exe

https://github.com/winsw/winsw/releases

2) 下载流程如下图所示:

3) 将文件名称修改为:TestService.exe

2. 创建exe的配置文件

1)创建名称为TestService.xml的文件并将以下内容添加到上述文件中。

需修改的xml节点为:id, name, description, env, executable, arguments

<service>
  
  <!-- ID of the service. It should be unique across the Windows system-->
  <!-- 服务在windows服务中的唯一标识 -->
  <id>TestService</id>
  <!-- Display name of the service -->
  <!-- 服务的显示名称 -->
  <name>Test Service (powered by WinSW)</name>
  <!-- Service description -->
  <!-- 服务的描述 -->
  <description>Test service description.</description>
  
  <!-- Path to the executable, which should be started -->
  <!-- jdk的系统变量名称 -->
  <env name="JAVA_HOME" value="%JAVA_HOME%"/>
  
  <!-- 执行jar包的命令(java为显式运行;javaw为后台运行) -->
  <executable>javaw</executable>
 
  <!-- 要执行命令的参数(根据实际情况做调整) -->
  <arguments>-Xms256m -Xmx256m -jar "C:\test\test-service-1.0.0.jar"  --xx</arguments>
 
  <startmode>Automatic</startmode>
​
</service>

3. 创建服务的相关bat文件

1) 创建安装服务的bat文件 创建名称为TestServiceInstall.bat的文件并将以下内容添加到文件中。

TestService.exe install

2) 创建卸载服务的bat文件 创建名称为TestServiceUninstall.bat的文件并将以下内容添加到文件中。

TestService.exe uninstall

3.) 创建定时监控服务状态的bat文件 创建名称为TestServiceAutoStart.bat的文件并将以下内容添加到文件中。

需修改的参数为:secs, srvname

@echo off
rem 自动调用管理员权限并在后台运行脚本
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",0)(window.close)&&exit
​
rem 定义循环间隔时间和监测的服务:
set secs=60
set srvname="TestService"
​
​
echo.
echo ========================================
echo ==         查询计算机服务的状态,     ==
echo ==     每间隔%secs%秒种进行一次查询,     ==
echo ==     如发现其停止,则立即启动。     ==
echo ========================================
echo.
echo 此脚本监测的服务是:%srvname%
echo.
​
​
if %srvname%. == . goto end
​
​
:chkit
set svrst=0
for /F "tokens=1* delims= " %%a in ('net start') do if /I "%%a %%b" == %srvname% set svrst=1
if %svrst% == 0 net start %srvname%
set svrst=
rem 下面的命令用于延时,否则可能会导致cpu单个核心满载。
ping -n %secs% 127.0.0.1 > nul
goto chkit
​
​
:end

4. 安装服务

双击TestServiceInstall.bat的文件自动安装服务。

5. 开机自动启动定时监控服务

此步骤是为了防止计算机操作人员有意或无意关闭正在运行的java程序导致线上系统受影响。

1)按下键盘上的Win+R键启动运行窗口。

2) 在输入框内输入shell:common startup打开windows自启文件夹。

3) 将test文件夹下的TestServiceAutoStart.bat文件复制到自启文件夹下,这样即完成了监控服务的开机自启。

6. 卸载服务

当系统需要下线时,双击TestServiceUninstall.bat的文件自动卸载服务。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值