Windows:服务注册

目录


一、概述

在项目开发完成线上之后需要启动程序,如果每一次都手动启动太麻烦,如果放到开始菜单里面,服务器重启之后还需要在手动登录一下,程序才会启动,为了解决这一问题,推荐使用WinSW来注册服务。

WinSW(Windows Service Wrapper)是微软推荐的开源工具(GitHub 地址:https://github.com/winsw/winsw),本质是一个轻量级的可执行程序(exe 文件),能把任意可执行程序 / 脚本(比如 Java JAR、Nginx、Python 脚本、Redis 等)封装成标准的 Windows 系统服务。

二、如何使用

WinSW 的使用逻辑对所有程序都通用,核心是 "1 个 exe + 1 个 XML 配置文件",步骤如下:

  • 准备工具和程序
  • 整理文件结构
  • 编写 XML 配置文件(核心)
xml 复制代码
<service>
  <!-- 1. 服务基础信息(唯一标识,不能重复) -->
  <id>MyServiceID</id>                <!-- 服务内部ID(无空格/特殊字符) -->
  <name>我的自定义服务</name>          <!-- 服务列表中显示的名称 -->
  <description>后台运行的自定义服务</description>

  <!-- 2. 程序启动配置(核心:改这两个参数适配你的程序) -->
  <executable>程序路径</executable>    <!-- 要运行的程序路径(如java、nginx.exe、python.exe) -->
  <arguments>启动参数</arguments>      <!-- 程序的启动参数(如-jar xxx.jar、-c xxx.conf) -->

  <!-- 4. 服务运行规则 -->
  <startmode>Automatic</startmode>     <!-- 启动模式:Automatic(开机自启)/ Manual(手动) -->
  <onfailure>Restart</onfailure>       <!-- 程序崩溃时自动重启 -->
  <restartdelay>3000</restartdelay>    <!-- 重启延迟3秒 -->

  <!-- 5. 日志配置(排查问题必备) -->
  <logpath>%BASE%\log</logpath>			 <!-- 日志目录(自动创建) -->
  <logmode>rotate</logmode>              <!-- 日志滚动(避免文件过大) -->
</service>

注意:这里的exe、xml文件名要跟启动程序的名字一致

  • 注册服务
java 复制代码
MyService.exe install
  • 启动服务
java 复制代码
MyService.exe start
  • 停止服务
java 复制代码
MyService.exe stop
  • 重启服务
java 复制代码
MyService.exe restart
  • 卸载服务(先停止)
java 复制代码
MyService.exe uninstall
  • 查看状态
java 复制代码
MyService.exe status

三、Java注册服务

  • 编写XML配置文件
xml 复制代码
<service>
     <id>xxx</id>
     <name>xxx</name>
     <description>xxx</description>
     
     <env name="JAVA_HOME" value="%JAVA_HOME%"/>
     <executable>java</executable>
     <arguments>-jar "C:\Users\Administrator\Desktop\123\xxx.jar"</arguments>
    
     <!-- 开机启动 -->
     <startmode>Automatic</startmode>
     <onfailure>Restart</onfailure>       <!-- 程序崩溃时自动重启 -->
     <restartdelay>3000</restartdelay>    <!-- 重启延迟3秒 -->

     
     <!-- 日志配置 -->
     <logpath>%BASE%\log</logpath>
     <logmode>rotate</logmode>
 </service>
相关推荐
执笔论英雄9 小时前
【RL]分离部署与共置模式详解
服务器·网络·windows
玖釉-11 小时前
深入浅出:渲染管线中的抗锯齿技术全景解析
c++·windows·图形渲染
Whoami!12 小时前
⓫⁄₈ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 滥用Windows服务提权(下)
windows·网络安全·信息安全·powerup.ps1
Knight_AL13 小时前
在 Windows 上安装本地 JAR 到 Maven 仓库
windows·maven·jar
春日见13 小时前
在 Windows中,WSL与Docker的关系
运维·开发语言·c++·windows·docker·容器
说给风听.14 小时前
解决 Node.js 版本冲突:Windows 系统 nvm 安装与使用全指南
windows·node.js
70asunflower15 小时前
Ubuntu Terminal 从零开始教程 - Windows用户转Linux指南
linux·windows·ubuntu
走粥15 小时前
TypeScript 泛型
开发语言·前端·javascript·windows·typescript
Dontla15 小时前
Windows管理系统启动项的方法(windows启动项、开机自启)
windows
张世争15 小时前
RT-Thread 5.3 windows bsp simulator scons --target=vs 生成的工程编译失败问题
windows·rt-thread·simulator