当前位置: 首页 > news >正文

WinSW注册服务

WinSW注册服务

    • 安装WinSW主程序
      • 在pwsh的$profile中配置winsw别名
        • 为winsw设置别名
        • 验证结果
    • WinSW配置文件
      • Windows进程优先级
    • WinSW注册服务
      • 方法1:将`WinSW-x64.xml` 要和WinSW-x64.exe在同一目录
      • 方法2:指定xml文件
        • 普通用户
    • WinSW常见用法
      • WinSW安装服务
      • WinSW卸载服务
      • WinSW开启服务
      • WinSW检查服务的当前状态
        • pwsh查看服务
      • WinSW停止服务
      • WinSW重新启动服务
    • 配置服务开机自启
      • 配置服务自动启动
      • 配置服务手动启动
      • 禁止服务自动启动

安装WinSW主程序

WinSW项目地址:https://github.com/winsw/winsw/releases

将下载的文件复制到需要安装服务的目录下,同时为了方便修改文件名为winsw.exe

# 查看WinSW版本
.\WinSW-x64.exe version


在pwsh的$profile中配置winsw别名

# 打开pwsh的$profile
notepad $profile

为winsw设置别名

注意:winsw的示例xml文件要和WinSW-64.exe放在同一目录。

# 为winsw设置别名
Set-Alias winsw "D:\bin\WinSW\WinSW-x64.exe"

验证结果
# 查看版本
winsw version


WinSW配置文件

服务名.xml

此处注意:文件名和配置文件的名字除后缀之外,其他要相同

原文链接:https://blog.csdn.net/qgbihc/article/details/121805661

常用的配置参数解释:https://www.cnblogs.com/hahaha111122222/p/14658907.html

文件官网xml文件参数如下:

字段解释
id:安装windows服务后的服务ID,必须是唯一的。
name:服务名称,也必须是唯一的。一般和id一致即可。
description:服务说明,可以使用中文,可做备注使用。
executable:执行的命令,比如启动springboot应用的命令java。
arguments:命令执行参数,比如 包路径,类路径等。

创建服务配置文件WinSW-x64.xml

<service><!-- id:安装windows服务后的服务ID,必须是唯一的。 --><id>服务id</id><!-- name:服务名称,也必须是唯一的。一般和id一致即可。 --><name>服务显示名称</name><!-- description:服务说明,可以使用中文,可做备注使用。 --><description>服务描述</description><!-- 工作目录 --><directory>C:\opt\switcher</directory><!-- 服务启动模式(延迟启动避免系统资源争抢) --><!-- Automatic 自动启动| DelayedAuto 延迟自动启动 --><startmode>DelayedAuto</startmode><!-- env 是变量 --><env name="JENKINS_HOME" value="%BASE%" /><!-- executable:执行的命令,比如启动springboot应用的命令java。 --><!-- 使用%NAME%引用环境变量,%BASE%代表当前 目录  --><executable>java</executable><!-- arguments:命令执行参数,比如 包路径,类路径等。 --><arguments>"-jar XXXXXXX"</arguments><!-- 日志模式 --><logmode>reset</logmode><!-- 故障恢复策略:失败后 60 秒重启 --><onfailure action="restart" delay="60 sec" /><!-- 进程优先级 --><priority>Realtime</priority><!-- 服务账号 --><!-- <serviceaccount><domain>YOURDOMAIN</domain><user>useraccount</user><password>Pa55w0rd</password><allowservicelogon>true</allowservicelogon></serviceaccount> -->
</service>

Windows进程优先级

原文链接:https://blog.csdn.net/Drecik__/article/details/8095467

优先级参数优先级等级解释
real-time最高级别此进程中的线程必须立即响应事件,执行实时任务,此进程中的线程还会抢占操作系统组件的CPU时间。
high此进程中的线程必须立即响应事件,执行实时任务,任务管理器运行在这一级,所以可以通过它结束失控的进程
above normal此进程的线程运行在normal和high之间。
normal此进程中的线程无需特殊的调度。
below normal此进程中的线程运行在normal和idle之间。
idle最低级别此进程中的线程在系统空闲时运行,屏幕保护程序,后台使用程序和统计数据收集软件通常使用该进程。

只有在绝对必要的时候才使用high优先级类,应该极可能避免使用real-time优先级类,因为real-time的进程会抢占操作系统组件的CPU时间,可能会阻止必要的磁盘I/O和网络通信,而且键盘和鼠标输入也无法及时的处理,只有充分的理由才使用real-time优先级。

注意:进程优先级的只是一个概念,进程是无法调度的,能调度的只有线程。


WinSW注册服务

编写好配置文件之后,记得把配置文件和可执行文件放在一起,这样winsw才能正确识别配置文件。然后我们使用管理员身份打开cmd窗口,cd进入到winsw所在目录中然后输入下面的命令,如果返回值为0,说明已将程序注册为服务。

https://cloud.tencent.com/developer/article/1936839


方法1:将WinSW-x64.xml 要和WinSW-x64.exe在同一目录

# WinSW-x64.xml 要和WinSW-x64.exe在同一目录# WinSW安装服务
winsw install# 示例
WinSW-x64.exe install


方法2:指定xml文件

# WinSW注册服务
winsw install ${服务xml文件}

普通用户
# 示例
## --no-elevate 使用普通用户安装
WinSW-x64.exe install myapp.xml --no-elevate

若需非管理员权限,在 XML 中配置普通用户服务账户

<!-- 定义服务运行时的账户信息 -->
<serviceaccount><!-- 指定服务运行的用户账户:- 格式:[域名或计算机名\]用户名(如 `.\LocalUser` 表示本地账户)- 若需使用域账户,格式为 `domain\username`- 默认不配置时以 LocalSystem 权限运行(高权限,不推荐)--><user>普通用户</user><!-- 账户密码:- 若 `<user>` 指定了非内置账户(如 LocalSystem),必须填写密码- 安全警告:明文存储密码有风险!建议:1. 通过 WinSW 加密工具加密后替换明文2. 使用 Windows 托管服务账户(gMSA)3. 配置文件设置访问权限(如仅管理员可读)--><password>密码</password><!-- 是否允许服务账户交互式登录:- `true`: 允许服务与桌面交互(如显示 GUI 窗口)- `false`: 禁止交互(默认值,推荐用于后台服务)- 警告:启用可能降低系统安全性,且需在 `secpol.msc` 中授予用户 "允许通过终端服务登录" 权限--><allowservicelogon>true</allowservicelogon>
</serviceaccount>

WinSW常见用法


WinSW安装服务

# WinSW安装服务
winsw install ${服务xml文件}

WinSW卸载服务

如果后续需要删除服务,同样在winsw所在目录中cmd,输入下面的命令进行删除卸载

# WinSW卸载服务
winsw uninstall ${服务名}

WinSW开启服务

# WinSW开启服务
winsw start ${服务名}

WinSW检查服务的当前状态

# WinSW 检查服务的当前状态
winsw status ${服务名}

pwsh查看服务
# pwsh查看服务
Get-Service 服务名


WinSW停止服务

# WinSW停止服务
winsw stop ${服务名}

WinSW重新启动服务

# WinSW 重新启动服务
winsw restart ${服务名}

配置服务开机自启


配置服务自动启动

# 配置服务自动启动
sc config 服务名 start= AUTO 

配置服务手动启动

# 配置服务手动启动
sc config 服务名 start= DEMAND

禁止服务自动启动

# 禁止服务自动启动
sc config 服务名 start= DISABLED

相关文章:

  • Windows环境下用pyinstaller将python脚本编译为exe文件
  • 使用pip3安装软件包报错`externally-managed-environment`的几种解决方式
  • Java SE(5)——数组
  • Cesium添加WMS,WMTS,地形图图,3D Tiles数据
  • AimRT 从零到一:官方示例精讲 —— 二、HelloWorld示例.md
  • 【C++11】新的类功能、lambda
  • 存储器分类
  • 【网络】HTTP报文首部字段
  • Qt的WindowFlags窗口怎么选?
  • LeetCode 2906 统计最大元素出现至少K次的子数组(滑动窗口)
  • oracle怎样通过固化较优执行计划来优化慢sql
  • ant design pro 项目发布遇到登录页访问404
  • 【免费下载】2012-2023年全国夜间灯光数据
  • 从遍历序列构造二叉树:前序+中序与中序+后序的递归解法详解
  • JavaScript面试问题
  • tbb parallel_for 使用
  • 颜色分类,不靠“调色盘”:双指针 VS 计数排序的正面PK
  • 【Linux】服务自启动设置的方式
  • LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding
  • Java之BigDecimal
  • 媒体:酒店、民宿临时毁约涨价,怎么管?
  • 总书记考察的上海“模速空间”,是一个怎样的空间?
  • 广东一公司违规开展学科培训被罚没470万,已注销营业执照
  • 四川落马厅官周海琦受审,1000多人接受警示教育
  • 人民日报:光荣属于每一个挺膺担当的奋斗者
  • 一周观展|五一假期将到,特展大展陆续开幕