一、测试环境
1. 硬件环境
-
处理器(CPU):i7-7700HQ
-
显卡(GPU):GTX1050
2. 操作系统
-
版本:Windows 11 专业版 22H2
-
操作系统版本:22621.1778
2.软件环境
-
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
的文件自动卸载服务。