WinSW使用说明

news2025/1/24 5:23:13

使用说明

  • 前言
  • 下载
  • 配置介绍
  • 示例
    • jar包启动示例
  • 安装服务

前言

由于使用windows自动的自启方法,不管是将程序启动服务放到开机自启文件夹中,还是创建任务计划程序,都没有很好的实现程序的开机自启效果,而WinSW很好的解决了这个问题。

下载

WinSW下载地址
注意:不同版本,有些配置是不一样的,比如我用的这个版本log mode就弃用了rotate模式,推荐使用roll模式。
这里我用的版本是: v2.12.0
在这里插入图片描述

配置介绍

配置的话其实在下载的那两个xml文件中就有介绍到,翻译着看也能懂的,这里再介绍一下比较常用的。

  • sample-allOptions.xml
    包含此版本的全部配置说明,文档不长,介绍的也很详细。
  • sample-minimal.xml
    给出一个最简单的示例配置,临时用用就够了。
参数说明
id安装windows服务后的服务ID,必须是唯一的,展示在任务管理器的服务列表中
name服务名称,也必须是唯一的,显示在打开服务的列表中
description服务描述
env环境变量,可在顶层配置多个
startmode启动模式,取值:Automatic(自动)、Manual(手动)、Boot(针对驱动程序)、 System(针对驱动程序),默认Automatic
delayedAutoStart是否启用延迟启动模式,值为true或者false,需要stratmode设置为Automatic
depend指定此服务依赖的其他服务的ID,仅在依赖的服务运行时此服务才可运行,可以使用多个标签指定多个依赖
log mode日志存储模式:append(默认,一直累积)、none(不存)、reset(启动就删除之前的)、roll、roll-by-time(参考下访说明)
logpath日志路径,%BASE%代表相对路径,也就是当前目录
executable要执行的命令,如启动命令java、nginx.exe
arguments命令执行参数,如指定虚拟机参数,配置文件路径、-jar xxx.jar等。
stopexecutable指定当请求停止服务时要执行的命令或可执行文件
stoparguments当请求停止服务时启动另一个进程时的参数
<service>
    <id>Minio-Server</id>
    <name>Minio-Server</name>
    <description>这个服务的描述</description>
    <env name="HOME" value="%BASE%"/>
    <env name="MY_TOOL_HOME" value="C:\etc\tools\myTool" />
    <env name="LM_LICENSE_FILE" value="host1;host2" />
    <depend>service_id1</depend>
	<depend>service_id2</depend>
	<startmode>Automatic</startmode>
  	<delayedAutoStart/>
    <!-- 要执行的可执行文件 -->
    <executable>%BASE%\xxx.exe</executable>
    <!-- 可执行文件传递的参数 -->
    <arguments>server "%BASE%\data"</arguments>
    <stopexecutable>%BASE%\xxx.exe -s stop</stopexecutable>
    <stoparguments>server "%BASE%\data"</stoparguments>
    <!-- <logmode>rotate</logmode> -->
    <logpath>%BASE%\logs</logpath>
    <log mode="roll-by-size-time">
      <sizeThreshold>10240</sizeThreshold>
      <pattern>yyyyMMdd</pattern>
      <autoRollAtTime>00:00:00</autoRollAtTime>
      <zipOlderThanNumDays>5</zipOlderThanNumDays>
      <zipDateFormat>yyyyMMdd</zipDateFormat>
    </log>
</service>

关于日志的的配置详细说明:
支持模式:

  • append - Rust更新现有日志;
  • none -不将可执行日志保存到磁盘;
  • reset -在启动时擦除日志文件;
  • roll-基于大小的滚动日志;
  • roll-by-time-根据时间滚动日志;
  • rotate -根据大小轮换日志,(8个日志,每个10MB)。此模式已弃用,请使用"roll".

roll模式的默认配置:

<!--工作方式类似于追加模式,
但除此之外,如果日志文件的大小超过了设定的大小,
它将滚转到myapp.1.out.log、myapp.2.out.log等等。
嵌套的<sizeThreshold>元素指定以KB为单位的旋转阈值(默认为10MB),
嵌套的<keepFiles>元素指定要保留的滚动文件的数量(默认为8)。-->
<log mode="roll-by-size">
  <sizeThreshold>10240</sizeThreshold>
  <keepFiles>8</keepFiles>
</log>

roll-by-time配置:按日志文件时间段滚动

<!--必须嵌套pattern标签指定日志文件名的时间标记格式,例如yyyyMMdd HH:mm-->
<log mode="roll-by-time">
  <pattern>yyyyMMdd</pattern>
</log>

roll-by-size-time配置:按日志文件大小和时间模式滚动

<!--嵌套sizeThreshold标签指定日志文件多大时生成新日志文件,单位为KB
嵌套pattern标签指定当日志文件文件名最后的区分字段格式(时间格式,如yyyyMMdd HH:mm)
嵌套autoRollAtTime标签指定每天在指定时间进行日志滚,例如00:00:00表示每天凌晨进行日志滚动-->
<log mode="roll-by-size-time">
  <sizeThreshold>10240</sizeThreshold>
  <pattern>yyyyMMdd</pattern>
  <autoRollAtTime>00:00:00</autoRollAtTime>
</log>

具体参考官方文档:log配置项说明及示例

可能有些配置文档中和官方给的下载xml中不一样,比如这个log mode参数,官方给的xml就没提到过roll-by-size-time这个配置,但是文档中有,其实也可以用。

示例

jar包启动示例

<service> 
     <!-- 服务唯一ID -->
     <id>imApiId</id>
     <!-- 服务名称-->
     <name>imApiService</name>
     <!-- 服务描述-->
     <description>this is im api,author:chaodev</description>
     <executable>java</executable> 
     <arguments>-jar imApi.jar</arguments>
     <!-- 开机启动 -->
     <startmode>Automatic</startmode>
     <!-- 日志配置 -->
     <logpath>%BASE%\logs</logpath>
     <logmode>roll</logmode>
 </service>

扩展:补偿两个手动启动的bat脚本:

1. 后台启动

#
@echo off
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
java -jar C:\Users\Administrator\Desktop\aa\jnpf-admin-3.4.5-RELEASE.jar > imApiLog.log  2>&1 &
exit

后台启动,启动日志及后续访问日志(相当于控制台输出日志),显示在脚本中设置的imApiLog.log中;
关闭服务:
netstat -ano|findstr 8088 # 根据端口号查进程
taskkill /f /pid 13968 # 根据进程id杀进程(/f:强制结束该进程以及所有子进程)

2. dos窗口启动

@echo off & setlocal EnableDelayedExpansion
 
title xxxx服务
 
for %%a in (8080) do (
  set pid=0
  for /f "tokens=2,5" %%b in ('netstat -ano ^| findstr ":%%a"') do (
    set temp=%%b
    for /f "usebackq delims=: tokens=1,2" %%i in (`set temp`) do (
      if %%j==%%a (
        taskkill /f /pid %%c
        set pid=%%c
        echo 端口号【%%a】相关进程已杀死
      ) else (
        echo 不是本机占用端口【%%a】
      )
    )
  )
  if !pid!==0 (
    echo 端口号【%%a】没有占用
  )
  java -Xms1024m -Xmx1024m -Dfile.encoding=utf-8 -jar xxx.jar 
)
 
echo 操作完成
pause

安装服务

将前边准备好的xml文件及下载的WinSW程序拷贝到需要配置开机自启的程序文件夹,根据需求重命名这两个文件,注意保持两个文件名一致
在这里插入图片描述

执行命令:

安装服务:
WinSW-x64.exe install

卸载服务:
WinSW-x64.exe uninstall

启动服务:
WinSW-x64.exe start

停止服务:
WinSW-x64.exe stop

重启服务:
WinSW-x64.exe restart

检查服务状态:
WinSW-x64.exe status

刷新服务属性而不是重新安装:
WinSW-x64.exe refresh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/894783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构OJ题】复制带随机指针的链表

原题链接&#xff1a;https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 此题可以分三步进行&#xff1a; 1. 拷贝链表的每一个结点&#xff0c;拷贝的结点先链接到被拷贝结点…

气象环境监测设备介绍

气象环境监测设备&#xff0c;是用于测量和监测气象参数的设备&#xff0c;可以根据不同功能、环境要求添加不同的传感器设备&#xff0c;主要用于气象领域、环保领域、农业领域等。 接下来&#xff0c;就让我们来介绍一下常见的气象监测设备都有哪些吧。 一、风速/风向监测设…

通义千问项目制作

这一次我们来做一个通义千问的项目 1.申请和开通 1.1.文字识别开通 首先&#xff0c;打开文字识别_OCR 文字识别_图片识别文字_数据智能-阿里云 (aliyun.com)页面并登陆阿里云账号&#xff0c;点击&#xff0c;文字识别服务。接下来在RAM 访问控制 (aliyun.com)页面申请一个A…

【学习笔记之opcua】使用Python获取opcua数据

Python与OPC UA的应用 示例代码 将代码放入spyder中运行后&#xff0c;出现下面这个错误 没有‘opcua’&#xff0c;那我们就下载pip install opcua 之后出现下面这个错误 问问题大不&#xff0c;安装语句写错了 正经安装语句是 !pip install opcua 读取opcua协议数据测试 …

快速入门vue3新特性和新的状态管理库pinia

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 Vue3.3新特性 defineOptions defineModel pinia 介绍 与 Vuex 3.x/4.x 的比较 安装 核心概念 定义…

css 实现文字横向循环滚动

实现效果 思路 ## 直接上代码,html部分 //我这里是用的uniapp <view class"weather_info_wrap"><view class"weather_info">当前多云&#xff0c;今晚8点转晴&#xff0c;明天有雨&#xff0c;温度32摄氏度。</view><view class&qu…

什么是异常处理

文章目录 异常处理介绍自定义异常页面文档:自定义异常页面说明 自定义异常页面-应用实例需求:代码实现 全局异常说明全局异常-应用实例需求:代码实现完成测试 自定义异常说明自定义异常-应用实例需求&#xff1a;代码实现完成测试 注意事项完成测试 异常处理 介绍 默认情况下…

DELL PowerEdge R720XD 磁盘RAID及Hot Spare热备盘配置

一台DELL PowerEdge R720XD服务器&#xff0c;需进行磁盘RAID及Hot Spare热备盘配置&#xff0c;本文记录配置过程示例。 一、设备环境 服务器型号&#xff1a;DELL PowerEdge R720XD 硬盘配置&#xff1a;800G硬盘共24块 二、配置计划 1、当前状态&#xff1a;2块盘配置RAID…

C语言 poll多路复用

NAME poll, ppoll - wait for some event on a file descriptor SYNOPSIS #include <poll.h> 函数原型&#xff1a; int poll(struct pollfd *fds, nfds_t nfds, int timeout); #define _GNU_SOURCE /* See feature_test_macros(7) */ …

机器视觉应用开发什么最重要?

&#xff08;QQ群有答疑&#xff09;零基础小白快速上手海康VisionMaster开发系列课程 高级语言在机器视觉就是工具&#xff0c;机器视觉软件&#xff0c;在机器视觉中也是工具&#xff0c;在机器视觉应用开发中&#xff0c;图像处理是最重要的&#xff0c;一切看图像&#xff…

基于IMX6ULLmini的Linux裸机开发系列四:工程文件整理和中断头文件移植

目录 文件整理 修改前 修改后 Makefile修改 中断头文件移植 文件整理 sources目录下分模块存放文件 子模块提供函数声明头文件 include目录下存放sdk移植头文件 sources/common目录存放一些通用工具 sources/project目录存放启动文件和主文件 修改前 修改后 Makefile修…

Nvidia Jetson 编解码开发(2)Jetpack 4.x版本Multimedia API 硬件编码开发--集成encode模块

1. 前言 这里介绍Multimedia API的开发流程 这篇主要介绍如何集成encode模块 2. 版本介绍 使用的Multimedia API版本: Tegra_Multimedia_API_R28.4.0_aarch64 兼容Jetpack4.x 系列版本Jetson(Nano/Tx2/Xavier/Xavier NX) 测试平台: Xavier NX 测试版本: JetPack 4.4 …

导入ERP数据生成子订单

1&#xff0c;在奥迪工装订购单表中开启导入Excel功能&#xff0c;把Excel表格中的数据导入后保存&#xff0c;审核后自动生成新的子订单合同 2&#xff0c;后台审核时触发生成子订单功能的存储过程 3&#xff0c;后台打开存储过程并且修改---》保存 USE [HYData] GO/****** O…

eNSP:VLAN-hybrid实验应用

实验要求&#xff1a; 拓扑图 配置 sw1: [sw1]vlan batch 2 to 6[sw1]int Ethernet 0/0/2 [sw1-Ethernet0/0/2]port link-type access [sw1-Ethernet0/0/2]port default vlan 2 [sw1-Ethernet0/0/2]int e 0/0/4 [sw1-Ethernet0/0/4]port link-ty access [sw1-Ethernet0/0/…

金盘 微信管理平台 getsysteminfo 未授权访问漏洞[2023-HW]

金盘 微信管理平台 getsysteminfo 未授权访问漏洞 一、漏洞描述二、漏洞影响三、网络测绘四、漏洞复现小龙POC检测: 五、 修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后…

java代码修改后,提交多个分支 git

1、先提交 dev 分支 2、然后切换到 dev02 分支 3、找到对应的日志

概率论与数理统计:第五章:大数定律与中心极限定理

文章目录 Ch5. 大数定律与中心极限定理(一) 依概率收敛(二) 大数定律1.伯努利大数定律2.切比雪夫大数定律3.辛钦大数定律 (三) 中心极限定理1.列维-林德伯格 中心极限定理 &#xff08;独立同分布&#xff0c;不指定具体分布&#xff0c;近似服从于标准正态分布&#xff09;2.德…

【Java】Servlet中的扩展点,ServletContainerInitializer,Listener,Filter

了解一种技术的设计思想&#xff0c;它的生命周期就比不可少&#xff0c;在使用扩展时就非常实用。Spring的扩展点已经在上一篇【【Spring源码】Spring扩展点及顺序_wenchun001的博客-CSDN博客】 Servlet中的扩展点 JavaWeb访问时的流程图 ServletContainerInitializer 在容器…

国标GB28181安防视频平台EasyGBS显示状态正常,却无法播放该如何解决?

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台&#xff0c;可实现的视频功能包括&#xff1a;实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强&#xff0c;支持将…

Mybatis查询数据库返回任意形式的返回结构

Mybatis查询数据库返回任意形式的返回结构 mapper的接口mapper.xml mapper的接口 假如有多个记录&#xff0c;可以将map放到 arraylist里 mapper.xml 主要是通过resultMap定义好映射格式