太阳当空照-Windows服务化方式Winsw基本配置(下)

简介: 太阳当空照-Windows服务化方式Winsw基本配置(下)

Roll by size and time mode

同时设置时间段阀值和单文件大小阀值,保证在目标时间段范围内限制单文件大小,实现日志文件的生成和日志记录

.......
<log mode="roll-by-size-time">
    <sizeThreshold>10240</sizeThreshold>
  <pattern>yyyyMMdd</pattern>
    <autoRollAtTime>00:00:00</autoRollAtTime>
</log>
.......

autoRollAtTime设置在00:00:00自动生成新的日志文件

Automatic archiving of logs

日志自动存档功能,最近版本已经弃用,未来可能会去掉该功能

.......
<log mode="roll-by-size-time">
  <zipOlderThanNumDays>5</zipOlderThanNumDays>
  <zipDateFormat>yyyyMM</zipDateFormat>
</log>
.......

zipOlderThanNumDays历史天数压缩保留的阀值天数,仅仅能够用于自动滚动时间模式的日志配置

........
<log mode="roll-by-size-time">
  <autoRollAtTime>00:00:00</autoRollAtTime>
  <zipOlderThanNumDays>5</zipOlderThanNumDays>
</log>
........

zipDateFormat历史压缩文件命名格式,仅仅能够用于自动滚动时间模式的日志配置

.....
<log mode="roll-by-size-time">
  <autoRollAtTime>00:00:00</autoRollAtTime>
  <zipDateFormat>yyyyMM</zipDateFormat>
</log>
.....

Error reporting

程序运行出现异常时,输出的错误编码,对应的错误清单,可以参考[微软文档]https://docs.microsoft.com/windows/win32/debug/system-error-codes

参数

arguments

参数传入节点,用于设定在服务子程序执行时需要传入的参数

.....
<arguments>arg1 arg2 arg3</arguments>
.....

或者

.....
<arguments>
    arg1
    arg2
    arg3
</arguments>
.....

executable/startarguments

执行程序和启动带有的参数内容,startarguments用于替代arguments,用于服务启动进行特定参数的设置和服务的启动

....
<executable>command01</executable>
<startarguments></startarguments>
....

stopexecutable/stoparguments

停止执行和停止时带有的参数内容,stoparguments用于替代arguments,用于停止服务时特定的停止参数设置和服务的停止

....
<stopexecutable>command01</stopexecutable>
<stoparguments></stoparguments>
....

其他指令

prestart

在当前服务执行之前需要执行的指令和相关参数,实际配置结构与服务启动停止一致

<prestart>
  <executable></executable>
  <arguments></arguments>
  <stdoutPath></stdoutPath>
  <stderrPath></stderrPath>
</prestart>

stdoutPath设定当前部分执行指令的输出目录路径

stderrPath设定当前部分异常信息输出目录路径

poststart

在当前服务开始之后,执行的相关部分,处理相关逻辑

<poststart>
  <!-- ... -->
</poststart>

prestop

在当前服务停止之前执行的指令和相关参数,实际配置结构与服务启动停止一致

<prestop>
  <!-- ... -->
</prestop>

poststop

在当前服务主进程停止之后,执行相关部分,处理相关逻辑

<prestop>
  <!-- ... -->
</prestop>

当给stdoutPathstderrPath设置为null值时,相关输出仅仅会以流的形式保存在运行内存中

Preshutdown

当服务进行停止时,给予服务更多的时间,进行服务服务停止操作

<preshutdown>false</preshutdown>
<preshutdownTimeout>3 min</preshutdown>

preshutdown是否开启预停止操作,默认为false

preshutdownTimeout预停止超时时间,默认为分钟

stoptimeout

When the service is requested to stop, winsw first attempts to send a Ctrl+C signal to a console application, or post a close message to a Windows application, then wait for up to 15 seconds for the process to exit by itself gracefully. If the timeout expires or the signal or message can’t be sent, then winsw resorts to terminate the service instantly

原文以个人理解翻译出来就是,当服务执行停止操作时,Winsw第一次尝试执行Ctrl+C到控制台应用或发送关闭消息到Windows应用,等待15秒流程的正常退出,如果超时无响应或无法发送消息,Winsw会立即终止服务操作

<stoptimeout>10sec</stoptimeout>

环境配置

Environment

如果服务进程有必要的话,可以多次指定环境变量的变量值

<env name="HOME" value="C:\Test"/>

interactive

可选配置,在有需要该服务需要和Windows桌面进行交互时,服务包含GUI可视化界面,添加当前配置节点,设置为true

<interactive>true</interactive>

beeponshutdown

可选项,该配置作为允许调试期间使用,笔者没弄明白配置用途,不建议在项目中使用,可能出现硬件和系统的不支持

<beeponshutdown>true</beeponshutdown>

download

用于在执行过程中,执行资源链接的下载相关操作以及下载之后对资源的加载和执行

<download from="http://example.com/some.dat" to="%BASE%\some.dat" />

对于需要认证才能访问的资源,可以使用属性authnone为默认值,sspi作为需要通过Windows提供的安全认证机制,包括KerberosNTML等,basic主要为登录用户名和密码实现远程访问

<download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="none" />
<download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="sspi" />
<download from="https://example.com/some.dat" to="%BASE%\some.dat" failOnError="true"
          auth="basic" user="aUser" password="aPassw0rd" />
<download from="http://example.com/some.dat" to="%BASE%\some.dat"
          proxy="http://aUser:aPassw0rd@192.168.1.5:80/"
          auth="basic" unsecureAuth="true"
          user="aUser" password="aPassw0rd" />

download同时支持代理proxy下载,可以多次进行设置

log

查阅当前文章日志操作部分内容

onfailure

可选参数,可以多次设定用于控制服务启动失败时的行为,属性action包含none默认值无任何操作,restart重启服务,reboot重启系统,并且出现蓝屏/绿屏重启画面,并显示CRITICAL_PROCESS_DIED错误检查代码

<onfailure action="restart" delay="10 sec"/>
<onfailure action="restart" delay="20 sec"/>
<onfailure action="reboot" />

resetfailure

可选配置,可以控制当前服务在Windows中重置故障计数器的时间,持续正常运行时间操作重置故障技术时间时,故障计数器将重置故障次数,默认值为1天

<resetfailure>1 hour</resetfailure>
<resetfailure>1 day</resetfailure>

安全描述

遵循SDDL 格式的服务安全描述字符串

[参考链接]https://docs.microsoft.com/windows/win32/secauthz/security-descriptor-definition-language

<securityDescriptor></securityDescriptor>

Service account

服务默认以本地系统账户进行安装,如果对权限要求不高,可以考虑本地系统用户网络服务账户普通用户帐户

<serviceaccount>
  <username>DomainName\UserName</username>
    <password>Password</password>
    <allowservicelogon>true</allowservicelogon>
</serviceaccount>

username中,如果当前用户属于内置域,可以直接使用.\UserName进行用户的账户设置,普通账户一般为DomainName\UserNameDomainName@UserName

allowservicelogon可选参数,设置为true时,将自动将选中将当前账户设置为所选服务登录账户

LocalSystem account

设置服务运行账户为本地系统账户

<serviceaccount>
  <username>LocalSystem</username>
</serviceaccount>

LocalService account

设置服务运行账户为本地服务账户

<serviceaccount>
  <username>NT AUTHORITY\LocalService</username>
</serviceaccount>

NetworkService account

设置服务运行账户为网络服务账户

<serviceaccount>
  <username>NT AUTHORITY\NetworkService</username>
</serviceaccount>

prompt

可选操作,设置用户名用户密码输入提示

<serviceaccount>
  <prompt>dialog|console</prompt>
</serviceaccount>

dialog弹出对话框提示

console控制台提示

Working directory

设置服务进程执行时的执行目录,查看本章中的相对路径和默认路径描述

Priority

可选项,设置服务调度的优先等级,可用值为:idle, belownormal, normal, abovenormal, high, realtime

<priority>idle</priority>

相关[参考链接]https://docs.microsoft.com/dotnet/api/system.diagnostics.processpriorityclass

Auto refresh

可选项,是否设置服务在执行startstoprestart操作时,自动刷新服务状态,默认为true

<autorefresh>true</autorefresh>

sharedDirectoryMapping

可选设置,默认情况下,Windows不会为服务创建共享目录映射,有时候,即使是已经配置了对应的映射,也可能由于域策略被屏蔽,以下是在执行服务之前,配置共享目录的映射操作配置

<shareDirectoryMapping>
  <map label="N:" uncpath="\\UNC" />
</shareDirectoryMapping>

以上为基于Winsw官方说明文件内容进行的翻译和个人理解的各类配置的基本说明



相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
4月前
|
Windows
Windows无法连接到打印机,请检查打印机名并重试 - 配置Windows 共享打印机出错;
WIN7共享打印机无法被WIN11连接,出现错误代码0x0000011b或0x00000709,可能是系统版本不兼容所致。本文提供多个轻量级修复工具,无需安装,双击即用,专为解决此类小问题设计,操作简单,适合普通用户快速修复打印机连接异常。
750 0
|
5月前
|
网络安全 Windows
Windows IIS 10如何配置自签名SSL并实现自动跳转
本文记录了IIS配置自签名证书及HTTPS跳转的注意事项。包括解决443端口占用问题、URL Rewrite插件安装与配置、web.config修改方法,以及避免因旧教程导致的配置错误。
Windows IIS 10如何配置自签名SSL并实现自动跳转
|
5月前
|
C语言 图形学 Windows
Windows下安装和配置GTK4(基于CLion)
本文介绍了作者选择GTK作为C语言图形库的原因,包括代码简洁、控件丰富和界面美观,并分享了在Windows环境下通过MSYS2安装GTK4及在CLion中配置开发环境的详细步骤。
643 0
|
5月前
|
Windows
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
163 2
|
8月前
|
安全 Windows
“由于启动计算机时出现了页面文件配置问题,Windows在你的计算机上创建了一个临时页面文件。。。”的问题解决
本文主要介绍了因清理电脑垃圾文件时误删虚拟内存导致的Windows页面文件配置问题,并提供了详细的解决步骤。问题表现为开机后出现临时页面文件创建的提示弹窗。解决方法包括通过控制面板或快捷键进入高级系统设置,进而调整虚拟内存设置:进入性能选项中的虚拟内存栏,选择自动管理所有驱动器的分页文件大小,最后确认并重启计算机以恢复正常运行。
6782 5
“由于启动计算机时出现了页面文件配置问题,Windows在你的计算机上创建了一个临时页面文件。。。”的问题解决
|
Windows
Windows下版本控制器(SVN)- 配置版本库
Windows下版本控制器(SVN)- 配置版本库
72 0
|
6月前
|
安全 Shell 开发工具
Windows下使用git配置gitee远程仓库
就在前几天因为一些原因,我的电脑重装了系统,然后再重新配置git的环境的时候就遇到了一些小问题。所以我决定自己写一篇文章,以便以后再配置git时,避免一些错误操作,而导致全网搜方法,找对的文章去找对应的解决方法。下面为了演示方便就拿gitee来演示,不拿GitHub了写文章了。
314 0
|
9月前
|
数据库连接 测试技术 Windows
【YashanDB知识库】windows配置ODBC跟踪日志, 使用日志定位问题
【YashanDB知识库】windows配置ODBC跟踪日志, 使用日志定位问题
|
9月前
|
Windows
Windows系统云服务器配置多用户登录
本教程介绍了在Windows云服务器上配置远程桌面服务的详细步骤,包括安装桌面会话主机和远程桌面授权、允许多用户远程连接以及配置新用户并加入远程桌面用户组。通过添加角色和功能、设置组策略以及管理用户权限,实现多用户同时登录和远程访问。按照指引操作,可顺利完成服务器的远程访问配置,提升管理和使用效率。
980 0