当前位置: 首页 > news >正文

WinSW设置应用程序开机启动

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

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

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

sample-allOptions.xml
包含此版本的全部配置说明,文档不长,介绍的也很详细。
sample-minimal.xml
给出一个最简单的示例配置,临时用用就够了。

<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>

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>

注意

id:唯一标识,我设为jar包的名称
name:服务中展示的名字
description:服务描述
executable:java 或 jdk路径
arguments:执行的命令和jar包路径,我这因为jar包和xml在一个目录,可以直接写jar包名,路径没给出也可以,给路径时,需要加双引号,ru:"d:/ff/xxx.jar"。

启动注册服务:在xxx.exe当前目录中进入cmd ,执行xxxexe install,服务中就注册成功了

扩展:补偿两个手动启动的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 EnableDelayedExpansiontitle xxxx服务for %%a in (8080) do (set pid=0for /f "tokens=2,5" %%b in ('netstat -ano ^| findstr ":%%a"') do (set temp=%%bfor /f "usebackq delims=: tokens=1,2" %%i in (`set temp`) do (if %%j==%%a (taskkill /f /pid %%cset pid=%%cecho 端口号【%%a】相关进程已杀死) else (echo 不是本机占用端口【%%a】)))if !pid!==0 (echo 端口号【%%a】没有占用)java -Xms1024m -Xmx1024m -Dfile.encoding=utf-8 -jar xxx.jar 
)echo 操作完成
pause

安装服务

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

注意

id:唯一标识,我设为jar包的名称
name:服务中展示的名字
description:服务描述
executable:java 或 jdk路径
arguments:执行的命令和jar包路径,我这因为jar包和xml在一个目录,可以直接写jar包名,路径没给出也可以,给路径时,需要加双引号,ru:"d:/ff/xxx.jar"。

启动注册服务:在imNginxService.exe当前目录中进入cmd ,输入 imNginxService.exe install 回车,服务中就注册成功了 

执行指令

执行命令:安装服务:
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

参考链接:https://blog.csdn.net/zwjzone/article/details/132362965

相关文章:

WinSW设置应用程序开机启动

前言 由于使用windows自动的自启方法&#xff0c;不管是将程序启动服务放到开机自启文件夹中&#xff0c;还是创建任务计划程序&#xff0c;都没有很好的实现程序的开机自启效果&#xff0c;而WinSW很好的解决了这个问题。 下载 WinSW下载地址 注意&#xff1a;不同版本&#…...

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …...

正则表达式零宽断言

正则表达式零宽断言 工具类&#xff0c;正则表达式匹配文本内容正则表达式语法例子例子01零宽断言?< 不包含左边值? 不包含右边值例子 常用正则表达式校验数字的表达式校验字符的表达式 工具类&#xff0c;正则表达式匹配文本内容 /*** 正则表达式工具类*/ public class…...

uni-app学习记录

uni-app注意点记录 跳转到 tabBar 页面只能使用 switchTab 跳转路由API的目标页面必须是在pages.json里注册的vue页面。如果想打开web url&#xff0c;在App平台可以使用 plus.runtime.openURL或web-view组件&#xff1b;H5平台使用 window.open&#xff1b;小程序平台使用web…...

API资源对象StorageClass;Ceph存储;搭建Ceph集群;k8s使用ceph

API资源对象StorageClass;Ceph存储;搭建Ceph集群;k8s使用ceph API资源对象StorageClass SC的主要作用在于&#xff0c;自动创建PV&#xff0c;从而实现PVC按需自动绑定PV。 下面我们通过创建一个基于NFS的SC来演示SC的作用。 要想使用NFS的SC&#xff0c;还需要安装一个NFS…...

Databend 开源周报第 124 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 新增对 Delta 和…...

Arduino开发实例-液体流量测量

液体流量测量 文章目录 液体流量测量1、流量传感器介绍2、硬件准备及接线3、代码实现在本文中,将介绍如何流量传感器进行测量液体流量。 流量传感器用于测量液体流速。 市场上有不同类型的流量传感器,在本文中,我们将使用霍尔效应流量传感器。 这些类型的流量传感器是非侵入…...

【idea】解决sprintboot项目创建遇到的问题

目录 一、报错Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found 二、报错java: 错误: 无效的源发行版&#xff1a;17 三、java: 无法访问org.springframework.web.bind.annotation.CrossOrigin 四、整合mybatis的时候&#xff0c;报java.lang.Ill…...

ADC芯片CS1237在电子秤方案的优势

​随着科技的不断发展&#xff0c;电子秤已经成为我们日常生活中不可或缺的测量工具。为了满足用户对于高精度、高稳定性的需求&#xff0c;芯海ADC芯片CS1237应运而生&#xff0c;为电子秤方案带来了革命性的变革。 一、芯海ADC芯片CS1237介绍 芯海ADC芯片CS1237是一款高性能…...

Leetcode的AC指南 —— 哈希表:202. 快乐数

摘要&#xff1a; Leetcode的AC指南 —— 哈希表&#xff1a;202. 快乐数。题目介绍&#xff1a;编写一个算法来判断一个数 n 是不是快乐数。 文章目录 一、题目二、解析1、哈希表 一、题目 题目介绍&#xff1a;编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为…...

机器学习 项目结构 数据预测 实验报告

需求&#xff1a; 我经过处理得到了测试值&#xff0c;然后进一步得到预测和真实值的比较&#xff0c;然后再把之前的所有相关的参数、评估指标、预测值、比较结果都存入excel,另外我还打算做测试报告模板&#xff0c;包括敏感性分析等。您建议我这些功能如何封装这些功能&…...

[Verilog] 设计方法和设计流程

主页&#xff1a; 元存储博客 文章目录 1. 设计方法2. 设计流程 3 Vivado软件设计流程总结 1. 设计方法 Verilog 的设计多采用自上而下的设计方法&#xff08;top-down&#xff09;。设计流程是指从一个项目开始从项目需求分析&#xff0c;架构设计&#xff0c;功能验证&#…...

C语言:指向数组的指针和指向数组元素的指针

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 指向数组的指针和指向数组元素的指针常常被混淆&#xff0c;或者笼统地被称为数组指针&#xff0c;但它们之间是有差别的&#xff0c;本文就将对此进行讨论。 下面的代码…...

SQL基础:SQL 介绍和数据库基础

SQL简介 常用的Java等语言是和计算机交流的工具&#xff0c;告诉计算机&#xff0c;让计算机做一些事。 和其类似&#xff0c;SQL是 Structured Query Language 的缩写&#xff0c;即结构化的查询语言&#xff0c;是和数据库交互的工具&#xff0c;即通过既定的一些格式&…...

SpringSecurity入门

前言 Spring Security是一个用于在Java应用程序中提供身份验证和授权功能的强大框架。它构建在Spring框架之上&#xff0c;为开发人员提供了一套灵活且全面的安全性服务&#xff0c;本篇将为大家带来Spring Security的详细介绍及入门 一.安全框架 在学习了解Spring Security之…...

iOS 应用在前台时显示通知

背景&#xff1a; 在iOS应用中&#xff0c;当应用在前台运行时&#xff0c;是不会默认弹出通知的。这是iOS的设计决定&#xff0c;以避免用户在使用应用的过程中被打扰。然而&#xff0c;如果你希望在应用在前台的时候也能收到通知&#xff0c;你可以在你的应用代码中进行一些…...

Hamming space

汉明距离表示两个相同长度字符串对应位置的不同字符的数量。 对两个字符串异或运算&#xff0c;并统计1的个数并相减&#xff0c;这个数就是汉明距离。...

anaconda 安装 使用 pytorch onnx onnxruntime

一&#xff1a;安装 如果不是 x86_64&#xff0c;需要去镜像看对应的版本 安装 Anaconda 输入命令 bash Anaconda3-2021.11-Linux-x86_64.sh 然后输入 yes 表示同意 确认安装的路径&#xff0c;一般直接回车安装在默认的 /home/你的名字/anaconda3 很快就安装完毕。输入 yes…...

Web请求与响应

目录 Postman Postman简介 Postman的使用 请求 简单参数 实体参数 数组参数 集合参数 日期参数 Json参数 路径参数 响应 ResponseBody 统一响应结果 Postman Postman简介 postman是一款功能强大的网页调试与发送网页http请求的Chrome插件&#xff0c;常用于进行…...

ADS学习笔记(一)——更新中

在ADS中&#xff0c;信号上升时间为信号从0&#xff5e;100&#xff05;所用的时间&#xff0c;而实际上定义的上升边均为10&#xff05;&#xff5e;90&#xff05;&#xff0c;所以可以认为上升边&#xff1d;0.8*ADS设置上升时间。 一、终端开路及短路的反射信号 1.仿真条…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

从零手写Java版本的LSM Tree (一):LSM Tree 概述

&#x1f525; 推荐一个高质量的Java LSM Tree开源项目&#xff01; https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree&#xff0c;专为高并发写入场景设计。 核心亮点&#xff1a; ⚡ 极致性能&#xff1a;写入速度超…...

算法刷题-回溯

今天给大家分享的还是一道关于dfs回溯的问题&#xff0c;对于这类问题大家还是要多刷和总结&#xff0c;总体难度还是偏大。 对于回溯问题有几个关键点&#xff1a; 1.首先对于这类回溯可以节点可以随机选择的问题&#xff0c;要做mian函数中循环调用dfs&#xff08;i&#x…...