NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:

  1. 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
  2. 安装简单,修改方便
  3. 可以重定向输出(并且支持Rotation)
  4. 可以自动守护封装了的服务,程序挂掉了后可以自动重启
  5. 可以自定义环境变量

这里面的每一个功能都非常实用,使用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封装为服务的更多相关文章

  1. nssm 在windows上部署服务

    简介 NSSM是一款可将Nodejs项目注册为Windows系统服务的工具.当你的Node.js项目需要部署在Windows Server上时,NSSM是一个不错的选择. 特点 NSSM将Node.j ...

  2. 在64位windows下使用instsrv.exe和srvany.exe创建windows服务

    在64位windows下使用instsrv.exe和srvany.exe创建windows服务   在32位的windows下,包括windows7,windows xp以及windows 2003, ...

  3. 将OutLook.exe注册为服务,让其一直保持开启状态

    类似于TaobaoProtect.exe是由TBSecSvc服务启动的 http://stackoverflow.com/questions/3582108/create-windows-servic ...

  4. AngularJS 事件广播与接收 $broadcast,$emit,$on 作用域间通信 封装factory服务 发布订阅

    不同作用域之间通过组合使用$broadcast,$emit,$on的事件广播机制来进行通信. 一.说明 1.广播 $broadcast 说明:将事件从父级作用域传播至本作用域及子级作用域. 格式:$b ...

  5. centos 7安装jdk并封装service服务

    一.概述 有一个Spring Cloud的jar包,文件名为:RDS.jar.必须要jdk1.8版本,需要部署在 Centos 7.5的服务器上面,最好能设置开机自启动! 二.安装jdk 关闭防火墙 ...

  6. Windows 下 把EXE 程序变成服务运行

    1. 下载  instsrv.exe 和 srvany.exe   我下载的地址  [点击打开链接][https://www.cr173.com/soft/64394.html] 2. cmd  cd ...

  7. nssm设置solr开机启动服务

    首先,下载nssm http://www.nssm.cc/download 命令 nssm install solr 然后到服务里启动solr,并设置为自动 Ctrl+Shift+Esc(说明:Esc ...

  8. 使用.net中的API网关模式封装微服务

    在本文中,我们将了解如何使用API网关模式来封装微服务并抽象出底层实现细节,从而允许使用者拥有进入我们系统的一致入口点. 为了构建和测试我们的应用程序,我们需要: 1.Visual Studio 20 ...

  9. 在64位windows下使用instsrv.exe和srvany.exe创建windows服务[转]

    本文转自:https://www.iflym.com/index.php/computer-use/201205020001.html 在32位的windows下,包括windows7,windows ...

随机推荐

  1. PL/SQL第三章 基础查询语句

    --查询所有列 select * from tab_name|view_name; SELECT * FROM emp; SELECT * FROM (SELECT * FROM emp); --查询 ...

  2. Dotfuscator使用

    参考:https://www.cnblogs.com/xiezunxu/articles/7228741.html

  3. Oracle查询表主键、外键

    项目中用到的一些Sql(oracle下的)总结: 1.查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,us ...

  4. python魔法函数(二)之__getitem__、__len__、__iter__

    魔法函数会增强python类的类型,独立存在 __getitem class Company: def __init__(self, employees): self.employees = empl ...

  5. yield()方法就是礼让,具体还是看cpu怎么分配

    package charpter07; //yield():礼让的行为public class Processor implements Runnable { @Override public voi ...

  6. hdu 1548 升降梯

    题目大意:有一个升降机,它有两个按钮UP和DOWN,给你一些数i表示层数,并且每层对应的Ki,如果按UP按钮,会从第i层升到第i+Ki层:如果按了DOWN则会从第i层降到第i-Ki层:并规定能到的层数 ...

  7. 使用k8s operator安装和维护etcd集群

    关于Kubernetes Operator这个新生事物,可以参考下文来了解这一技术的来龙去脉: https://yq.aliyun.com/articles/685522?utm_content=g_ ...

  8. jsp统计页面访问量和刷访问量的简单使用

    ~Jsp可以进行简单的页面访问量统计,当然也可以使用Jsp刷访问量. 1:第一种使用全局变量<%! int i=0;%>进行页面的访问量统计,只有新打开一个浏览器才可以进行统计. 2:第二 ...

  9. centos安装autossh

    $ sudo yum install wget gcc make$ wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz$ tar -xf ...

  10. linux 中的./configuration --prefix=安装路径 的用法(指定源码安装方式的安装路基)

    源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install). Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./con ...