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