Windows 服务常用工具及 nssm 使用示例

Windows 将某个应用程序设为服务运行,确保它在后台稳定运行,并且在系统重启后自动启动。

常见的工具包括 Windows 自带的服务管理器、sc 命令、srvany 和第三方工具 nssm

1.常用 Windows 服务工具

  • Windows 服务管理器:通过图形化界面(services.msc)管理服务,适合简单的服务启动、停止和配置。
  • sc命令:Windows 提供的命令行工具,可以用于创建和管理服务,但功能较为基础。
  • srvany:来自 Windows Server Resource Kit 的工具,允许将任意可执行文件作为服务运行,配置较为繁琐。
  • nssm:推荐的第三方工具,功能强大,易于配置。支持自动重启、服务依赖等高级功能,非常适合将应用程序(如 Nginx、Java JAR)作为服务运行。

2.`nssm` 介绍

  nssm(Non-Sucking Service Manager) 是一个轻量级的命令行工具,专门用于将普通的可执行程序(如 .exe.jar)包装成 Windows 服务。它相较于其他工具(如 scsrvany)的优势在于:

  • 易用性:图形化配置及命令行双支持。
  • 自动重启:程序崩溃时可以自动重启服务。
  • 日志管理:可以将服务的输出重定向到日志文件。
  • 依赖管理:支持设置服务依赖,确保服务按顺序启动。

3.下载 `nssm` 并配置环境变量

步骤 1:下载 `nssm`

  1. 访问 nssm 官方网站。
  2. 下载适合系统的版本(32 位或 64 位)。
  3. 解压下载的压缩包,并将 nssm.exe 放到一个合适的位置.

步骤 2:配置 `nssm` 到环境变量

nssm.exe 添加到环境变量,命令行直接使用 nssm 命令。

  1. 右键点击 此电脑,选择 属性
  2. 点击 高级系统设置 -> 环境变量
  3. 系统变量 中找到 Path,点击 编辑

点击 新建,添加 nssm.exe 所在目录的路径。

  1. 点击 确定 保存更改。

步骤 3:验证配置

打开命令提示符,输入 nssm,如果看到 nssm 的帮助信息,则配置成功。

nssm

4.`nssm` 常用命令解释

常用的 nssm 命令:

  • 安装服务:将应用程序注册为 Windows 服务。
nssm install <服务名称>

打开一个图形界面,配置服务。

  • 启动服务:启动已注册的服务。
nssm start <服务名称>
  • 停止服务:停止正在运行的服务。
nssm stop <服务名称>
  • 重启服务:重启服务。
nssm restart <服务名称>
  • 移除服务:从系统中删除已注册的服务。
nssm remove <服务名称> confirm
  • 编辑服务配置:可以通过命令行修改服务的配置。
nssm edit <服务名称>
  • 查看服务状态:可以通过命令行查看服务的状态。
nssm status <服务名称>

5.配置 Nginx 为 Windows 服务

假设已经安装了 Nginx,并希望它作为 Windows 服务运行。

步骤 1:安装 Nginx 服务

  1. 打开命令提示符(管理员权限),输入安装命令来创建 Nginx 服务:
nssm install <服务名>
  1. 在弹出的 nssm 配置窗口中:
    • Path:选择 nginx.exe 的路径。
    • Startup directory:选择 Nginx 的安装目录,
    • Arguments:不需要填写,保持为空。
  2. 点击 Install service 以完成安装。

步骤 2:启动 Nginx 服务

服务安装后,使用以下命令启动 Nginx 服务:
nssm start <服务名>

可以通过 services.msc 在 Windows 服务管理器中手动启动服务。

步骤 3:查看服务运行状态

通过命令查看:
nssm status <服务名>

结果:

也可以直接在任务管理器服务中查看:

6.配置 JAR 为 Windows 服务

有一个 Java 应用程序 xxx.jar,希望将其作为 Windows 服务运行。

步骤 1:安装 JAR 服务

1. 打开命令提示符(管理员权限),输入安装命令来创建服务:
nssm install MyJavaService
  1. 在弹出的 nssm 配置窗口中:
    • Path:选择 java.exe 的路径,通常位于jdk安装目录的 bin 文件夹中。
    • Startup directory:设置为JAR 文件所在的目录,例如 E:\preInspenction
    • Arguments:输入启动 JAR 的参数,例如:
-jar preInspenction.jar
  1. 点击 Install service 以完成安装。

步骤 2:启动 JAR 服务

服务安装后,使用以下命令启动 Java 服务:

nssm start MyJavaService

也可以通过 services.msc 手动启动或停止服务。

步骤 3:JAR 服务的高级配置(可选)

  • 资源限制Arguments 中加入 JVM 参数,如设置最大堆内存:
-Xmx512m -jar xxx.jar
  • 日志管理:通过 nssm 将标准输出和错误输出重定向到日志文件,方便调试和监控应用程序运行情况。

总结

通过 nssm,可以轻松地将 Nginx 或 Java 应用程序(JAR 文件)配置为 Windows 服务,实现自动启动、后台运行以及崩溃后的自动重启。


参考文章:

《NSSM系列》使用NSSM将程序安装成Windows服务

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

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

相关文章

汽车资讯新动力:Spring Boot技术驱动

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

头歌——vlan基本配置第二关

任务描述 本关任务&#xff1a;根据前面的实验&#xff0c;完成相应的题目测试。

深度解析FastDFS:构建高效分布式文件存储的实战指南(上)

文章目录 一、FastDFS简介1.1 概述1.2 特性 二、FastDFS原理架构2.1 FastDFS角色2.2 存储策略2.3 上传过程2.4 文件同步2.5 下载过程 三、FastDFS适用场景四、同类中间件对比4.1 FastDFS和集中存储方式对比4.2 FastDFS与其他文件系统的对比 五、FastDFS部署5.1 单机部署5.1.1 使…

LeetCode 3249.统计好节点的数目:深度优先搜索(DFS)

【LetMeFly】3249.统计好节点的数目&#xff1a;深度优先搜索(DFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-the-number-of-good-nodes/ 现有一棵 无向 树&#xff0c;树中包含 n 个节点&#xff0c;按从 0 到 n - 1 标记。树的根节点是节点 0 。给你一…

中国省级金融发展水平指数(金融机构存款余额、贷款余额、GDP)2020-2023年

数据范围&#xff1a; 包含的数据内容如下&#xff1a; 分省份金融机构存款余额、分省份金融机构贷款余额、分省份金融机构存贷款余额、分省份GDP、分省份金融发展指数 西藏自治区、贵州省、黑龙江省2023年数据暂未公布&#xff0c;计算至2022年&#xff0c;其他省份数据无缺失…

大模型(LLMs)RAG 版面分析——表格识别方法篇

大模型&#xff08;LLMs&#xff09;RAG 版面分析——表格识别方法篇 一、为什么需要识别表格&#xff1f; 表格的尺寸、类型和样式展现出多样化的特征&#xff0c;如背景填充的差异性、行列合并方法的多样性以及内容文本类型的不一致性等。同时&#xff0c;现有的文档资料不…

力扣(leetcode)题目总结——辅助栈篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏&#xff1a;点击进入 leetcode题目分类 关注走一波 前言&#xff1a;本系列文章初衷是为了按类别整理出力扣&#xff08;leetcode&#xff09;最经典题目&#xff0c…

【python系列】python数据类型的分类和比较

一、数据类型的定义 在程序设计的类型系统中,数据类型(英语:Data type),又称资料型态、资料型别,是用来约束数据的解释。——Wikipedia 从定义我们可以看出来,数字类型的理解最主要的是约束数据的解释,每个类型都有他们自己所使用得场景,这个就是数字类型的分类,分类…

【JavaSE】【多线程】阻塞队列

目录 一、阻塞队列1.1 生产者消费者模型1.2 Java提供的阻塞队列1.3 实现一个简单生产者消费者模型 二、自己实现阻塞队列2.1 成员变量2.2 构造方法2.3 put方法2.4 take方法2.5 最终代码 一、阻塞队列 阻塞队列&#xff1a;是一种特殊的队列&#xff0c;也有先进先出的特性。它…

【pytest】pytest注解使用指南

前言&#xff1a;在 pytest 测试框架中&#xff0c;注解&#xff08;通常称为装饰器&#xff09;用于为测试函数、类或方法提供额外的信息或元数据。这些装饰器可以影响测试的执行方式、报告方式以及测试的组织结构。pytest 提供了多种内置的装饰器&#xff0c;以及通过插件扩展…

el-table合并单元格之后,再进行隔行换色的且覆盖表格行鼠标移入的背景色的实现

el-table 中有现成的隔行换色功能&#xff0c;只要增加 stripe 属性即可。但是如果有单元格合并的话&#xff0c;这个属性就不可用了。这时候我们就需要动点小心思了。 基于相同字段进行合并 单元格合并&#xff1a;基于表头中的某一列&#xff0c;具有相同值的个数相加进行合…

OpenAI模型whisper 音频转文本

最近有一个音频转文本的需求&#xff0c;了解到了OpenAI的whisper模型可以实现。 Whisper 是 OpenAI 提供的一个通用语音识别模型&#xff0c;支持多语言的音频转文本功能&#xff0c;并具有较高的准确性。它的主要用途包括自动语音识别 (ASR)、语言翻译&#xff08;将音频直接…

ubuntu下连接了192.168.1.x和192.168.2.x两个网络段,如何让这个两个网段互相通信?

在 Ubuntu 上连接两个网络段&#xff08;如 个人终端A 192.168.1.10 和 个人终端B 192.168.2.10&#xff09;&#xff0c;需要配置路由和网络转发功能&#xff0c;使这两个网段能够相互通信。以下是实现方法&#xff1a; 步骤 1&#xff1a;确认网络配置 1. 确保 Ubuntu 机器…

汽车资讯新高度:Spring Boot技术飞跃

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

03-axios常用的请求方法、axios错误处理

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

机器学习基础04_朴素贝叶斯分类决策树分类

目录 一、朴素贝叶斯分类理论 1、贝叶斯分类理论 2、条件概率 3、全概率公式 4、贝叶斯推断 5、朴素贝叶斯推断 6、拉普拉斯平滑系数 二、决策树分类 1、相关概念 2、基于信息增益决策树的建立 3、基于基尼指数决策树的建立 一、朴素贝叶斯分类理论 1、贝叶斯分类理…

git日志查询和导出

背景 查看git的提交记录并下载 操作 1、找到你idea代码的路径&#xff0c;然后 git bash here打开窗口 2、下载所有的日志记录 git log > commit.log3、下载特定日期范围内记录 git log --since"2024-09-01" --until"2024-11-18" 你的分支 > c…

后台管理系统(开箱即用)

很久没有更新博客了&#xff0c;给大家带上一波福利吧,大佬勿扰 现在市面上流行的后台管理模板很多,若依,芋道等,可是这些框架对我们来说可能会有点重,所以我自己从0到1写了一个后台管理模板,你们使用时候可扩展性也会更高 项目主要功能: 成员管理&#xff0c;部门管理&#…

Spring Boot 牛刀小试 org.springframework.boot:spring-boot-maven-plugin:找不到类错误

今天看了下书翻了下Spring Boot的用法&#xff0c;下载idea后&#xff0c; 反复出现org.springframework.boot:spring-boot-maven-plugin:找不到类错误&#xff0c;后来看了下调试窗口&#xff0c;发现是连不上maven的网站443错误&#xff0c;解决思路很简单&#xff0c;把ide连…

数据中心的拥塞控制

前面提到&#xff0c;如今的高速网络方案集中在卸载主机网络能力&#xff0c;降低主机处理时延&#xff0c;甚至 PFC 用网络排队时延换主机时延&#xff0c;本末倒置。而在拥塞控制领域仍是传统的 AIMD 闭环反馈&#xff0c;ECN&#xff0c;QCN 那一套&#xff0c;但拥塞是端到…