NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。它的特点如下:
- 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
- 安装简单,修改方便
- 可以重定向输出(并且支持Rotation)
- 可以自动守护封装了的服务,程序挂掉了后可以自动重启
- 可以自定义环境变量
首先去nssm的官网下载
服务安装:
服务安装可以使用如下命令:
nssm install <servicename>
执行此命令后,会出现一个界面,基本上看着就知道怎么用了,大多数情况下,只需要填第一个界面的程序路径就可以了。
其它界面的是高级参数的配置,可以根据需要自行选择。
参数填完后执行"install service"按钮即可将服务安装到系统,可以使用系统的服务管理工具查看了。
当然,如果要自动化安装,可以直接带上程序路径: nssm install <servicename> <program> [<arguments>]
NSSM本身win7及以上的系统基本都是支持的,如果安装失败,请首先检查是否装了某国产管家或国产杀毒软件。
安装完成后,服务还没有启动,需要通过下面的服务管理的命令启动服务。
服务管理:
服务管理主要有启动、停止和重启,其命令如下:
启动服务: 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 appEsap "%CD%\esap.exe"
nssm set appEsap Description esap
nssm set appEsap AppStdout "%CD%\log\esap.log"
nssm set appEsap AppStderr "%CD%\log\esap.log"
nssm set appEsap AppRotateFiles 1
nssm set appEsap AppRotateOnline 1
nssm set appEsap AppRotateSeconds 86000
nssm set appEsap AppRotateBytes 2048000
nssm start appEsap