目 录CONTENT

文章目录

winsw:一个通用的Windows服务包装器

筱晶哥哥
2023-09-02 / 0 评论 / 0 点赞 / 154 阅读 / 5490 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-12-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

winsw是一个通用的Windows服务包装器,可以将任何可执行文件(.exe,.bat等)包装成Windows服务。

winsw不需要安装,仅需将winsw.exe和配置文件复制到指定目录即可。

winsw通过一个XML配置文件来定义服务的行为,可以轻松地安装,卸载,启动和停止自定义Windows服务。

下载

https://github.com/winsw/winsw/releases

https://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/

特点

1、轻量级:winsw非常轻便,处理Windows服务所需的文件非常少,而且不需要安装任何东西,只需要将winsw.exe和配置文件复制到指定目录即可。

2、易配置:winsw使用XML作为配置文件格式,配置文件非常易于阅读和编辑。winsw支持命令行参数来替代配置文件中的某些选项,从而使服务的配置更加简单。

3、灵活性:winsw可以轻易地将几个脚本或可执行文件捆绑到一个Windows服务中。winsw通过提供许多不同的配置选项来适应各种服务需求。

4、可扩展性:winsw提供了丰富的扩展点来处理Windows服务的各种方面,例如日志记录和事件通知。

使用

winsw的使用非常简单,只需要将WinSW-x64.exe和配置文件复制到指定目录即可。

以下是一个基本的winsw配置文件示例,以nacos为例。

<!--
  配置示例:https://github.com/winsw/winsw/blob/master/examples/sample-allOptions.xml
  需要使用管理员身份运行
  注册服务:WinSW-x64.exe install
  卸载服务:WinSW-x64.exe uninstall
  查看状态:sc query nacos
  启动服务:sc start nacos、net start nacos
  停止服务:sc stop nacos、net stop nacos
  如果 nacos 服务在运行时,卸载了 nacos 服务,nacos 服务在 Windows 服务列表中不会消失,消失时间为服务停止后
-->
<service>
    <!-- Windows 服务名 -->
    <id>nacos</id>
    <!-- 名称,比如nacos -->
    <name>nacos-server-2.2.2</name>
    <!-- 描述 -->
    <description>nacos服务</description>
    <!-- 启动执行命令 -->
    <executable>"D:\workspace_coding\docker\k8s\nacos-server-2.2.2\bin\startup.cmd"</executable>
    <!-- 启动执行参数 -->
    <startarguments>-m standalone</startarguments>
    <!-- 停止执行命令 -->
    <stopexecutable>"D:\workspace_coding\docker\k8s\nacos-server-2.2.2\bin\shutdown.cmd"</stopexecutable>
    <!-- 停止执行参数 -->
    <stoparguments></stoparguments>
    <!--
        选项:日志路径
        为服务包装器生成的所有日志设置自定义日志记录目录
        默认值:目录,包含执行者
    -->
    <logpath>%BASE%\logs</logpath>
    <!-- 控制日志-->
    <log mode="roll-by-size">
        <!-- 一个日志文件大小 20480k(20M),单位是k-->
        <sizeThreshold>20480</sizeThreshold>
        <!-- 一共有 10 个日志文件,-->
        <keepFiles>10</keepFiles>
    </log>
</service>

如果遇到停止服务,一直卡在正在停止的服务,可以查询进行执行杀死

可以一个窗口去关闭,然后一个窗口去杀死

C:\Users\xiaojingge>net start JarBoot
JarBoot 服务正在启动 .
JarBoot 服务已经启动成功。


C:\Users\xiaojingge>net stop JarBoot
JarBoot 服务正在停止............
系统出错。

发生系统错误 1067。

进程意外终止。

JarBoot 服务已成功停止。
C:\Users\xiaojingge>sc queryex JarBoot

SERVICE_NAME: JarBoot
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0xb
        WAIT_HINT          : 0x3a98
        PID                : 55680
        FLAGS              :

C:\Users\xiaojingge>taskkill /pid  "55680"  -t -f
成功: 已终止 PID 15676 (属于 PID 55860 子进程)的进程。
成功: 已终止 PID 17252 (属于 PID 59996 子进程)的进程。
成功: 已终止 PID 55860 (属于 PID 55680 子进程)的进程。
成功: 已终止 PID 59996 (属于 PID 55680 子进程)的进程。
成功: 已终止 PID 55680 (属于 PID 1420 子进程)的进程。

相关文章

winsw使用——将Nginx和Jar包注册到WIN服务

0

评论区