在windwos系统中,有时候需要java的jar开机自启动,或者nginx的开机自启动,或者内网穿透工具(frp)的开机自启动,使用WinSW是一种很好的选择,记录一下使用WinSW实现的方式
WinSW开源和下载地址(最新版WinSW v2.11.0)
https://github.com/winsw/winsw
https://github.com/winsw/winsw/releases/tag/v2.11.0
我的电脑是win10的64位系统,因此下载对应的版本,WinSW需要win10系统.NET Framework支持的,在老系统中,可能需要弄兼容,其中有两个配置文件,一个简单的一个复杂的(详细字段说明太复杂了,只需要简单的功能就可以,没有去研究过)
sample-minimal.xml
sample-allOptions.xml
windows10系统配置nginx开机启动
Nginx-WinSW-x64.xml和Nginx-WinSW-x64.exe名称必须保持一致,使用的相对路径
Nginx-WinSW-x64.xml文件内容
<service>
<!-- 安装windows服务后的服务ID,必须是唯一的 -->
<id>Nginx-Service</id>
<!-- 服务名称,唯一的,一般和id一致即可 -->
<name>Nginx-Service</name>
<!-- 该服务的描述 -->
<description>Nginx-Service-Test</description>
<!-- 启动 执行的命令 -->
<executable>nginx.exe</executable>
<!-- 停止 -->
<stopexecutable>nginx.exe -s stop</stopexecutable>
<!-- 第一次启动失败 120秒重启 -->
<onfailure action="restart" delay="120 sec"/>
<!-- 第二次启动失败 300秒后重启计算机 -->
<onfailure action="reboot" delay="300 sec"/>
<!-- 开机启动 -->
<startmode>Automatic</startmode>
<!-- 日志配置 -->
<logpath>nginx-WinSW-log</logpath>
<!-- append:追加模式;reset:重设模式,每次服务启动时,旧的日志文件都会被截断;none:不生成任何日志文件 -->
<logmode>none</logmode>
</service>
nginx-winsw-install.bat
@echo off
Nginx-WinSW-x64.exe install
exit
nginx-winsw-start.bat
@echo off
Nginx-WinSW-x64.exe start
exit
nginx-winsw-stop.bat
@echo off
Nginx-WinSW-x64.exe stop
exit
nginx-winsw-uninstall.bat
@echo off
Nginx-WinSW-x64.exe uninstall
exit
首先运行nginx-winsw-install.bat 这样便能达到开机启动的作用,
如果马上要启动,那么在注册运行之后运行nginx-winsw-start.bat
停止和注销注册也有,注销之后开机启动就不起作用了
window10配置java开机启动(系统需要有java环境)
Boot-WinSW-x64.xml
<service>
<!-- 该服务的唯一标识 -->
<id>boot-black</id>
<!-- 该服务的名称 -->
<name>boot-black-0.0.1</name>
<!-- 该服务的描述 -->
<description>boot-black-0.0.1-SNAPSHOT</description>
<!-- 要运行的程序路径 -->
<executable>java</executable>
<!-- 携带的参数 -->
<arguments>-jar boot-black-0.0.1-SNAPSHOT.jar</arguments>
<!-- 第一次启动失败 60秒重启 -->
<onfailure action="restart" delay="120 sec"/>
<!-- 第二次启动失败 120秒后重启 -->
<onfailure action="restart" delay="240 sec"/>
<!-- 日志模式 -->
<logmode>append</logmode>
<!-- 指定日志文件目录(相对于executable配置的路径) -->
<logpath>boot-WinSW-log</logpath>
<!-- append:追加模式;reset:重设模式,每次服务启动时,旧的日志文件都会被截断;none:不生成任何日志文件 -->
<logmode>none</logmode>
</service>
boot-black-install.bat
@echo off
Boot-WinSW-x64.exe install
exit
boot-black-uninstall.bat
@echo off
Boot-WinSW-x64.exe uninstall
exit
可以参照对比写出相应的bat操作文件
@echo off
Boot-WinSW-x64.exe start
exit
@echo off
Boot-WinSW-x64.exe stop
exit