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配置文件自定义服务的行为,包括服务名称、描述、工作目录、启动参数等。这使得你可以灵活地配置服务以适应不同的需求。
目录
相关文章
|
存储 弹性计算 安全
阿里云渠道商:新手如何选择阿里云ECS实例?
阿里云ECS凭借弹性扩展、稳定可靠与安全防护,助力企业高效上云。本文系统解析实例规格选择关键因素:业务场景匹配、性能评估、成本优化、地域部署与扩展规划,结合计费模式与实际需求,提供科学选型建议,助您精准匹配资源,提升云上效能。(238字)
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
2570 5
|
安全 数据安全/隐私保护 虚拟化
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)
3134 2
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)
|
安全 Unix 物联网
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 10 月更新)
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 10 月更新)
1316 0
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 10 月更新)
|
运维 安全 网络安全
Windows Server 2019拨号“找不到设备”?Error 1058解决指南
Windows Server 2019拨号报错1058?别急!这不是硬件故障,而是关键服务被禁用。通过“服务依存关系”排查,依次启动“安全套接字隧道协议”“远程接入连接管理”和“路由与远程访问”服务,仅需4步即可恢复PPPoE或VPN拨号功能,轻松解决网络中断问题。
955 1
|
存储 SQL 人工智能
Windows Server 2025 中文版、英文版下载 (2025 年 10 月更新)
Windows Server 2025 中文版、英文版下载 (2025 年 10 月更新)
1527 0

热门文章

最新文章