Windows【工具 04】WinSW官网使用说明及实例分享(将exe和jar注册成服务)实现服务器重启后的服务自动重启

简介: Windows【工具 04】WinSW官网使用说明及实例分享(将exe和jar注册成服务)实现服务器重启后的服务自动重启

官方Github;官方下载地址。没有Git加速的话很难下载,分享一下发布日期为2023.01.29的当前最新稳定版v2.12.0网盘连接。

包含文件:

  • WinSW-x64.exe
  • sample-minimal.xml
  • sample-allOptions.xml

链接:https://pan.baidu.com/s/1sN3hL5HvFzzNwuz8npaQNw

提取码:vsvg

为什么要注册为服务 服务器重启后服务可以自行重启。

WinSW官网使用说明及实例分享

1.官网使用说明

1.1 使用配置说明

Use WinSW as a global tool

  1. Take WinSW.exe or WinSW.zip from the distribution.
  2. Write myapp.xml (see the XML config file specification and samples for more details).
  3. Run winsw install myapp.xml [options] to install the service.
  4. Run winsw start myapp.xml to start the service.
  5. Run winsw status myapp.xml to see if your service is up and running.

作为全局工具使用,不同服务使用不同的xml文件进行操作。

Use WinSW as a bundled tool

  1. Take WinSW.exe or WinSW.zip from the distribution, and rename the .exe to your taste (such as myapp.exe).
  2. Write myapp.xml (see the XML config file specification and samples for more details).
  3. Place those two files side by side, because that’s how WinSW discovers its co-related configuration.
  4. Run myapp.exe install [options] to install the service.
  5. Run myapp.exe start to start the service.

作为绑定工具使用,默认使用同名的xml文件进行操作,个人感觉这种方式更适合实施的小伙伴儿。

Sample configuration file

You write the configuration file that defines your service. The example below is a primitive example being used in the Jenkins project:

<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins continuous integration system.</description>
  <env name="JENKINS_HOME" value="%BASE%"/>
  <executable>java</executable>
  <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
  <log mode="roll"></log>
</service>

The full specification of the configuration file is available here. You can find more samples here.

这个配置文件举例是很典型的可执行文件+参数,适合很多服务。

1.2 Usage

WinSW is being managed by the XML configuration file.

Your renamed WinSW.exe binary also accepts the following commands:

Command Description
install Installs the service.
uninstall Uninstalls the service.
start Starts the service.
stop Stops the service.
restart Stops and then starts the service.
status Checks the status of the service.
refresh Refreshes the service properties without reinstallation.
customize Customizes the wrapper executable.
dev Experimental commands.

Experimental commands:

Command Description
dev ps Draws the process tree associated with the service.
dev kill Terminates the service if it has stopped responding.
dev list Lists services managed by the current executable.

Most commands require Administrator privileges to execute. WinSW will prompt for UAC in non-elevated sessions.

这些命令不再详细说明,用到的时候再介绍。

2.实例分享

2.1 将exe注册成服务

这里使用对象存储MinIO的minio.exe进行Use WinSW as a bundled tool举例,详细步骤如下:

  1. WinSW-x64.exe重命名为minio-server.ext
  2. 添加配置文件minio-server.xim内容如下,配置详情可查看sample-allOptions.xml
<service>
  <id>minio-server</id>
  <name>MinIO-Server</name>
  <description>This service runs MINIO OBJECT STORE.</description>
  <env name="MINIO_HOME" value="%BASE%"/>
  <executable>%BASE%\minio.exe</executable>
  <arguments>server D:\minio_data --console-address ":9001"</arguments>
  <logpath>%BASE%\logs</logpath>
  <log mode="roll-by-size-time">
    <sizeThreshold>1024</sizeThreshold>
    <pattern>yyyyMMdd</pattern>
    <autoRollAtTime>00:00:00</autoRollAtTime>
    <zipOlderThanNumDays>5</zipOlderThanNumDays>
    <zipDateFormat>yyyyMMdd</zipDateFormat>
  </log>
  <env name="MINIO_ROOT_USER" value="admin" />
  <env name="MINIO_ROOT_PASSWORD" value="admin123" />
</service>
  1. cmd执行命令minio-server.exe install安装为服务(此时服务并未启动)
INFO  - Installing service 'MinIO-Server (minio-server)'...
INFO  - Service 'MinIO-Server (minio-server)' was installed successfully.
  1. 执行命令minio-server.exe start启动服务

完整流程测试:

2.2 将jar注册成服务

这里使用 Arthas(阿尔萨斯)用于测试的math-game.jar包进行Use WinSW as a bundled tool举例,详细步骤如下:

  1. WinSW-x64.exe重命名为math-game-server.exe
  2. 添加配置文件math-game-server.xml内容如下
<service>
  <id>math-game-server</id>
  <name>Math-Game-Server</name>
  <description>This service runs math-game server.</description>
  <env name="MATHGAME_HOME" value="%BASE%"/>
  <executable>java</executable>
  <arguments>-Xrs -Xmx128m -jar "%BASE%\math-game.jar"</arguments>
  <logpath>%BASE%\logs</logpath>
  <log mode="roll-by-size-time">
    <sizeThreshold>1024</sizeThreshold>
    <pattern>yyyyMMdd</pattern>
    <autoRollAtTime>00:00:00</autoRollAtTime>
    <zipOlderThanNumDays>5</zipOlderThanNumDays>
    <zipDateFormat>yyyyMMdd</zipDateFormat>
  </log>
</service>

-Xrs 参数是"Reduce Signal Usage"的缩写,它告诉JVM降低对操作系统信号的使用。通常情况下,JVM会捕获一些操作系统信号,如SIGTERM(终止信号)和SIGINT(中断信号),用于优雅地关闭Java进程。然而,使用 -Xrs 参数后,JVM会尽量减少对这些信号的使用,而是依赖于Java代码来处理关闭操作。这可以提高JVM在某些情况下的稳定性。

  1. cmd执行命令math-game-server.exe install安装为服务(此时服务并未启动,状态为:已停止)
INFO  - Installing service 'Math-Game-Server (math-game-server)'...
INFO  - Service 'Math-Game-Server (math-game-server)' was installed successfully.
  1. 执行命令minio-server.exe start启动服务

启动后打印的日志:

跟exe一样,这里仅作部分测试:

3.总结

WinSW(Windows Service Wrapper)是一个开源的项目,它允许将任何可执行文件(通常是.NET应用程序、exe应用程序、Java JAR文件等)转化为Windows服务。WinSW的目标是使在Windows操作系统上运行非Windows服务变得更加容易。它提供了一种将应用程序包装为Windows服务的方式,允许你以服务的形式启动、停止、暂停和恢复应用程序。

以下是WinSW的主要特点和用途:

  1. 应用程序包装为服务:WinSW允许你将各种类型的应用程序包装为Windows服务,而无需修改应用程序代码。这对于将常规应用程序部署为服务非常有用。
  2. 简化管理:一旦应用程序被包装为服务,你可以使用Windows服务管理器或命令行工具来管理它,例如sc命令。这使得在Windows上部署和管理应用程序更加方便。
  3. 自定义配置:WinSW允许你通过XML或YAML配置文件自定义服务的行为,包括服务名称、描述、工作目录、启动参数等。这使得你可以灵活地配置服务以适应不同的需求。
目录
相关文章
|
1月前
|
Java 开发工具 Windows
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
|
2月前
|
Java Linux Windows
windows实现自动部署jar包运行程序
windows实现自动部署jar包运行程序
39 0
|
3月前
|
监控 测试技术 网络安全
基于阿里云计算巢部署的幻兽帕鲁服务器我该如何设置计划任务定时备份和重启,以及存档导入导出
基于阿里云计算巢部署的幻兽帕鲁服务器我该如何设置计划任务定时备份和重启,以及存档导入导出
|
4月前
|
弹性计算 Java PHP
新手用户注册阿里云账号、实名认证、购买云服务器图文教程参考
对于初次购买阿里云产品的用户来说,第一步要做的是注册账号并完成实名认证,然后才是购买阿里云服务器或者其他云产品,本文为大家以图文形式展示一下新手用户从注册阿里云账号、实名认证到购买云服务器完整详细教程,以供参考。
新手用户注册阿里云账号、实名认证、购买云服务器图文教程参考
|
25天前
|
安全 网络安全 数据安全/隐私保护
如何配置常用邮箱服务器_云·企业官网 | 常用邮箱配置邮件服务器
本文介绍了邮件服务器的作用,如接收用户留言和表单通知,并提供阿里云企业邮箱、QQ邮箱、腾讯企业邮箱、163邮箱和谷歌邮箱的配置步骤。建议根据服务器所在地选择相应邮箱服务。配置涉及开启SMTP/POP3服务、获取授权码或应用密码,并在网站后台填写邮件服务器地址、SSL设置、账号和端口等信息。
42 0
|
26天前
|
存储 固态存储 网络安全
云服务器注册教程
本文概述了云服务器的优势,如价格亲民、按小时计费、SSD存储和高性能,并介绍了云服务器的注册及创建虚拟专用服务器的步骤。注册过程包括邮箱验证、激活账号和绑定支付方式。创建云服务器时,选择操作系统、计划、数据中心等配置,然后通过SSH连接。云服务器因其易用性和经济性受到开发人员和小型企业青睐。文章还提及了使用WordPress搭建个人博客的教程。
159 0
云服务器注册教程
|
28天前
|
NoSQL Java 应用服务中间件
使用innoSetup将mysql+nginx+redis+jar包打包成windows安装包
使用innoSetup将mysql+nginx+redis+jar包打包成windows安装包
使用innoSetup将mysql+nginx+redis+jar包打包成windows安装包
|
1月前
|
弹性计算 安全 数据安全/隐私保护
远程桌面连接Windows实例,提示“为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多”错误解决方案
远程桌面连接Windows实例,提示“为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多”错误解决方案
149 0
|
1月前
|
弹性计算 运维 监控
停止、重启或释放ECS实例
停止、重启或释放ECS实例
48 4
|
2月前
|
弹性计算 编解码 监控
ECS实例问题之ECS实例无法选择Windows操作系统如何解决
ECS实例指的是在阿里云ECS服务中创建的虚拟计算环境,用户可在此环境中运行应用程序和服务;本合集将介绍ECS实例的创建、管理、监控和维护流程,及常见问题处理方法,助力用户保障实例的稳定运行。

热门文章

最新文章