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>
相关推荐
泡海椒17 小时前
JQuick-SQL 快速开始:注册内存表并执行查询
数据库·windows·sql
钱栈up20 小时前
耳机音效不对,我顺手查了系统更新,结果挖出个崩溃了整天的服务
windows·shell
xiao77mwq20 小时前
Wireshark 在 Windows 上没法按进程抓包,我补了一条路
windows
Helix25021 小时前
MDT自动化部署实战:构建企业级Windows批量装机与PXE网络引导环境
windows·mdt自动化部署·wds网络启动·pxe引导·windows批量装机·任务序列·无人值守安装
学IT的周星星1 天前
记忆系统:让 Agent 记住你是谁、上次聊到哪
运维·服务器·人工智能·windows·大模型·llm·agent
撞强1 天前
Windows 上从零开始:Obsidian + Copilot(Icompify)+ 客户洞察实战 · 图文指南
windows·copilot·obsidian·icompify
weixin_571667411 天前
Windows 通过 SSH 反向隧道向 Ubuntu 转发代理
linux·运维·windows·代理
事圆则缓1 天前
Kotlin 集合与序列:给页面一份清楚的数据
开发语言·windows·kotlin
遇印记1 天前
应用层,网络管理
运维·网络·windows·学习·安全
硫酸锌011 天前
安卓手机连接Windows电脑后通过DHCP服务为手机分配IP地址
android·windows·计算机网络