使用NSSM将exe封装为服务
NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:
- 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
- 安装简单,修改方便
- 可以重定向输出(并且支持Rotation)
- 可以自动守护封装了的服务,程序挂掉了后可以自动重启
- 可以自定义环境变量
这里面的每一个功能都非常实用,使用NSSM来封装服务可以大大简化我们的开发流程了。
- 开发的时候是一个普通程序,降低了开发难度,调试起来非常方便
- 安装简单,并且可以随时修改服务属性,更新也更加方便
- 可以利用控制台输出直接实现一个简单的日志系统
- 不用考虑再加一个服务实现服务守护功能
我觉得它还可以需要增加的一个功能是将输入输出重定向为一个tcp连接,这样可以通过telnet的方式实现程序的交互了,那样就更加好用了。
下面就简单的介绍一下如何使用这个工具。
首先去nssm的官网下载
服务安装:
服务安装可以使用如下命令: nssm install <servicename>
执行此命令后,会出现一个界面,基本上看着就知道怎么用了,大多数情况下,只需要填第一个界面的程序路径就可以了。

其它界面的是高级参数的配置,可以根据需要自行选择。
参数填完后执行"install service"按钮即可将服务安装到系统,可以使用系统的服务管理工具查看了。
当然,如果要自动化安装,可以直接带上程序路径: nssm install <servicename> <program> [<arguments>]
NSSM本身win7及以上的系统基本都是支持的,我测试过win7,2008,2016系统,都是没有问题的,如果安装失败,请首先检查是否装了某国产管家或国产杀毒软件。
安装完成后,服务还没有启动,需要通过下面的服务管理的命令启动服务。
服务管理:
服务管理主要有启动、停止和重启,其命令如下:
- 启动服务: nssm start <servicename>
- 停止服务: nssm stop <servicename>
- 重启服务: nssm restart <servicename>
当然,也可以使用系统自带的服务管理器操作和使用系统的命令。
修改参数:
NSSM安装的服务修改起来非常方便,命令如下:
nssm edit <servicename>
会自动启动操作界面,直接更改即可。
服务删除:
服务删除可以使用如下命令之一:
- nssm remove <servicename>
- nssm remove <servicename> confirm
功能没有大的区别,后面的命令是自动确认的,没有交互界面。
命令行:
服务自动化需要使用更多的命令行,具体参看官方文档: Managing services from the command line
如下是一个安装Jenkins服务的示例:
nssm install Jenkins %PROGRAMFILES%\Java\jre7\bin\java.exe
nssm set Jenkins AppParameters -jar slave.jar -jnlpUrl https://jenkins/computer/%COMPUTERNAME%/slave-agent.jnlp -secret redacted
nssm set Jenkins AppDirectory C:\Jenkins
nssm set Jenkins AppStdout C:\Jenkins\jenkins.log
nssm set Jenkins AppStderr C:\Jenkins\jenkins.log
nssm set Jenkins AppStopMethodSkip 6
nssm set Jenkins AppStopMethodConsole 1000
nssm set Jenkins AppThrottle 5000
nssm start Jenkins
其它教程:
这里找了网上一些关于nssm的使用教程,感兴趣的朋友可以参考一下:
使用NSSM将exe封装为服务的更多相关文章
- nssm 在windows上部署服务
简介 NSSM是一款可将Nodejs项目注册为Windows系统服务的工具.当你的Node.js项目需要部署在Windows Server上时,NSSM是一个不错的选择. 特点 NSSM将Node.j ...
- 在64位windows下使用instsrv.exe和srvany.exe创建windows服务
在64位windows下使用instsrv.exe和srvany.exe创建windows服务 在32位的windows下,包括windows7,windows xp以及windows 2003, ...
- 将OutLook.exe注册为服务,让其一直保持开启状态
类似于TaobaoProtect.exe是由TBSecSvc服务启动的 http://stackoverflow.com/questions/3582108/create-windows-servic ...
- AngularJS 事件广播与接收 $broadcast,$emit,$on 作用域间通信 封装factory服务 发布订阅
不同作用域之间通过组合使用$broadcast,$emit,$on的事件广播机制来进行通信. 一.说明 1.广播 $broadcast 说明:将事件从父级作用域传播至本作用域及子级作用域. 格式:$b ...
- centos 7安装jdk并封装service服务
一.概述 有一个Spring Cloud的jar包,文件名为:RDS.jar.必须要jdk1.8版本,需要部署在 Centos 7.5的服务器上面,最好能设置开机自启动! 二.安装jdk 关闭防火墙 ...
- Windows 下 把EXE 程序变成服务运行
1. 下载 instsrv.exe 和 srvany.exe 我下载的地址 [点击打开链接][https://www.cr173.com/soft/64394.html] 2. cmd cd ...
- nssm设置solr开机启动服务
首先,下载nssm http://www.nssm.cc/download 命令 nssm install solr 然后到服务里启动solr,并设置为自动 Ctrl+Shift+Esc(说明:Esc ...
- 使用.net中的API网关模式封装微服务
在本文中,我们将了解如何使用API网关模式来封装微服务并抽象出底层实现细节,从而允许使用者拥有进入我们系统的一致入口点. 为了构建和测试我们的应用程序,我们需要: 1.Visual Studio 20 ...
- 在64位windows下使用instsrv.exe和srvany.exe创建windows服务[转]
本文转自:https://www.iflym.com/index.php/computer-use/201205020001.html 在32位的windows下,包括windows7,windows ...
随机推荐
- Ubungu 18.04安装MySQL 5.7.24
Ubuntu 18.04,mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64), USERNAME@USERNAME-VirtualBox:~$ sud ...
- Android ImageView 的scaleType 属性图解
ImageView 是 Android 中最常用的控件之一,而在使用ImageView时,必不可少的会使用到它的scaleType属性.该属性指定了你想让ImageView如何显示图片,包括是否进行缩 ...
- 洛谷 P4427 求和
传送门啦 思路: 开始不肿么容易想到用倍增,但是想到需要求 $ Lca $ ,倍增这种常数小而且快的方法就很方便了.求 $ Lca $ 就是一个最普通的板子.那现在考虑怎么求题目中的结果. 树上差分可 ...
- CCF2014032窗口(C语言)
问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域.窗口的边界上的点也属于该窗口.窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的 ...
- poj3481 splaytree模板题
找不到错在哪里,先留着吧 /* splay是以键值排序的! 三个操作:1 a b,z增加键值为b的点,值为a 2,查询最大值 3,查询最小值 需要的操作:rotate,splay,insert,fin ...
- hdu3397区间覆盖,区间翻转,区间合并,区间求和
调了很久的代码..注意区间翻转和覆盖的操作互相的影响 /* 区间替换操作怎么搞? 应该是加个tag标记 如果整个区间都是0|1,那么把若有tag的话直接set1|0即可,也不用设置tag标记 反之要设 ...
- 性能测试五:jmeter进阶之后置处理器(正则、json提取器)
如,从get返回的json中提取stock的值 作为post的请求参数 1.JSON提取器 专门对json数据进行提取的后置处理器 Debug Sampler:记录之前的请求的所有参数及数据 2.正则 ...
- pytest十五:pytest-html 生成 html 报告
pytest-HTML 是一个插件,pytest 用于生成测试结果的 HTML 报告.兼容 Python 2.7,3.6 pytest-html1.github 上源码地址[https://githu ...
- apache tomcat 集群!
公司需要一个内部测试局域网, 要求可以支持3000并发访问!以前也没做过服务器这方面.临时抱佛脚,查看了N多文档,他人经验,布置好之后,又遇到了N多问题,功夫不负有心人.终于还是完成了要求!观他人的布 ...
- webservice restful一个小例子
需求 公司有一个产品,包括前台WEB界面和多个后台服务,各个服务都需要在前面界面中进行配置和控 制,以调整服务的行为.以前,配置文件都存放在数据库中,界面上修改配置后入库,并发送消息(Socket)通 ...