注册 登录

清河洛

winsw配置文件参数详解

qingheluo2020-12-02清河洛874
winsw的配置文件是xml格式的,必须以service为根元素<service> ...... </service> 值中可以使用环境变量,如%Name%,会自动实际值替换,如果该环境变量未设置,则不会发生替换参数值中的相对路径都是相对于配置文件所在目录有些参数值是表示一个时间段的,该参数单位后缀可以使sec / secs / min / mins / hour / hours / day / days服务属性id:指定用于标识服务的id。在安装的所有服务中必须是唯一的,并且应完全由字母数字字符组成name:服务的简短显示名称,可以包含空格和其他字符,在...

winsw的配置文件是xml格式的,必须以service为根元素

<service>
    ......
</service>

值中可以使用环境变量,如%Name%,会自动实际值替换,如果该环境变量未设置,则不会发生替换

参数值中的相对路径都是相对于配置文件所在目录

有些参数值是表示一个时间段的,该参数单位后缀可以使sec / secs / min / mins / hour / hours / day / days

服务属性

id:指定用于标识服务的id。在安装的所有服务中必须是唯一的,并且应完全由字母数字字符组成
name:服务的简短显示名称,可以包含空格和其他字符,在所有服务中也必须是唯一的
description:服务的人类可读描述

服务配置

serviceaccount:指定服务运行时使用的账户,默认使用内置账户:LocalSystem

嵌套user标签指定用户名(格式DomainName\UserName或者UserName@DomainName),当前内置域使用".\UserName"
    显示的使用内置账户(内置账户没有密码,即使提供密码也会被忽略)的几个值:"LocalSystem","NT AUTHORITY\LocalService","NT AUTHORITY\NetworkService",,
嵌套password指定用户的密码
嵌套allowservicelogon表示是否自动为指定帐户设置“允许作为服务登录”权限
嵌套prompt表示提示输入用户名和密码,该值格式为<prompt>dialog|console</prompt>
    dialog:使用对话框提示
    console:在控制台上提示

workingdirectory:服务运行时的工作目录
depend:指定此服务依赖的其他服务的ID,仅在依赖的服务运行时此服务才能运行,可以使用多个标签指定多个依赖
env:单标签,通过name和value两个属性为子进程设置环境变量,可以使用多次设置多个变量

<env name="MY_PATH" value="%PATH%;newpath"/>

logpath:指定日志文件的所在目录,默认为配置文件所在的目录
log:该标签的mode属性指定从启动过程中捕获stdout和stderr的几种不同方法:

<log mode="roll"></log>
append:追加模式
reset:重设模式,每次服务启动时,旧的日志文件都会被截断
none:不生成任何日志文件
roll-by-size:按日志文件大小滚动,日志大于指定大小后重新生成新的日志文件进行写入,日志文件名最后以阿拉伯数字区分
    嵌套sizeThreshold标签指定日志文件多大时生成新日志文件,单位为KB
    嵌套keepFiles标签指定最多要保留的日志文件数
roll-by-time:按日志文件时间段滚动
    必须嵌套pattern标签指定日志文件名的时间标记格式,如yyyyMMdd HH:mm
roll-by-size-time:按日志文件大小和时间模式滚动
    嵌套sizeThreshold标签指定日志文件多大时生成新日志文件,单位为KB
    嵌套pattern标签指定当日志文件文件名最后的区分字段格式(时间格式,如yyyyMMdd HH:mm)
    嵌套autoRollAtTime标签指定每天在指定时间进行日志滚动。如00:00:00表示每天凌晨进行日志滚动

interactive:单标签,是否允许服务与桌面交互,默认不允许,如果使用了此元素表示允许

自从推出UAC(Windows Vista及以后版本)以来,服务不再真正允许与桌面交互
这一切都是为了让用户切换到一个单独的窗口站来与服务交互


启动停止配置

executable:指定要启动的可执行文件。可以是绝对路径,也可以仅指定执行文件,会从PATH中搜索
arguments:启动时的参数

stoptimeout:指定停止超时时间,默认15秒
    <stoptimeout>15sec</stoptimeout>
    当执行了winsw的停止服务命令后:
        winsw首先尝试发送Ctrl+C信号,然后等待指定时间,让进程自动优雅地退出
        如果进程没有成功退出,winsw会调用TerminateProcess函数立即强制终止服务进程及其所有线程

如果想要更优雅的退出服务,需要使用
stopexecutable:当请求停止服务时启动的可执行文件,不提供默认使用executable指定的文件
stopargument:当请求停止服务时启动参数

当使用了stopargument,就必须使用startarguments而不能使用arguments来指定启动配置
startexecutable:当请求启动服务时启动的可执行文件,不提供默认使用executable指定的文件
startarguments:指定启动时的参数

beeponshutdown:单标签,是否允许在服务关闭时发出简单的提示音,调试功能,某些系统或硬件不支持

startmode:指定Windows服务的启动模式。可以是以下值之一
    Boot:设备驱动程序由操作系统加载程序启动。此值仅对驱动程序服务有效
    System:设备驱动程序由操作系统初始化过程启动。此值仅对驱动程序服务有效
    Automatic:自动,服务控制管理器将在系统启动期间自动启动服务,默认值
    Manual:手动,当进程调用StartService方法时,由服务控制管理器启动的服务
    Disabled:禁用,无法再启动的服务。

delayedAutoStart:单标签,表示是否启用延迟启动模式(需要startmode设置为Automatic)

prestart:预启动,服务启动时和主进程启动之前,将执行预启动命令
poststart:启动后,服务启动时和主进程启动后,将执行启动后命令
prestop:停止前,服务停止时和主进程停止之前,执行停止前命令
以上三个标签可以内部嵌套executable,arguments,stdoutPath,stderrPath等

stopparentprocessfirst:是否在停止子进程之前终止父进程,默认true
    指定服务关闭的顺序。当主进程是控制台时,这很有用,控制台可以响应Ctrl+C命令并正常关闭子进程

download:从指定URL下载文件到本地。在启动服务时且启动服务程序之前运行
    可以使用多个该标签以下载多个文件到本地
    from属性指定要下载文件的的url地址
    to属性指定下载到本地的文件名
    proxy属性指定代理,格式为"http://[USERNAME:PASSWORD@]HOST:PORT/"
    auth:身份验证,默认值为none(不验证),为basic则表示使用基本身份验证
        当使用基本身份验证时需要额外的附加属性,user指定用户名,password指定密码
    failOnError:下载失败是否继续启动服务,默认true

waithint:指定两次调用SetServiceStatus函数的间隔时间超过多少时会被标记为无响应,默认"15 sec"
sleeptime:服务两次调用SetServiceStatus函数的间隔时间,默认"1 sec"

preshutdown:是否关机前进行阻止立即关机,当启动时服务有更多时间停止
preshutdownTimeout:关机前超时,默认值为"3 min"

onfailure:单标签,指定服务启动失败时的行为
    action属性指定行为,可选的值有restart(重启服务),reboot(重启系统)和none
    delay属性指定服务启动失败多久后执行操作,默认为0。
    多个onfailure按失败顺序依次执行,当失败实数超过onfailure标签数量时,重复执行最后一个onfailure标签指定的操作。

resetfailure:重置故障计数的时间,默认值为"1 day"
    表示服务持续正常运行超过多长时间故障计数会重置为0,即认为服务正常启动则
    这个可能会影响onfailure属性的操作


网址导航