nssm简介

nssm是一个服务封装程序,它可以将普通exe程序封装成服务,实现开机自启动,同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。
官网下载地址:https://nssm.cc/download

特点: 可以自动守护封装了的服务,程序挂掉了后可以自动重启

我的使用背景

最近windows 下 搭建nginx+php 的服务器,实现可上传文件:其中启动php-cgi进程需要 cmd 执行 php-cgi.exe -b 127.0.0.1:9000 -c php.ini 命令启动,而且这个cmd 窗口会一直存在,就会导致及其容易不小心把 cmd窗口关掉,(或者一些其他不知道的原因),导致php-cgi进程挂掉,由此网上搜索找到了nssm 工具,通过该工具把 php-cgi.exe 进程启动封装成 windows 服务,更加稳定,进程不容易挂

下边是cmd 一般方式启动 php-cgi, cmd窗口一直存在
在这里插入图片描述

nssm 使用介绍

1 安装

安装包直接解压缩,根据自己的系统类型选择 win32 或者win64
C:\Users\19011\Desktop\2023-12-02 22_35_51-nssm-2.24-101-g897c7ad.png

2 使用

nssm.exe 根目录下 打开cmd, 执行 nssm.exe install 会弹出图形界面
在这里插入图片描述
在这里插入图片描述
Application Path: exe程序所在目录
Startup directory: 会自动填充
Arguments: cmd 命令行方式启动php-cgi 程序后边跟的参数
Service name: 自定义服务的名字
点击 Install service ,弹窗 安装完成。任务管理器-服务中即可看到我们的服务,右键 开始即可启动服务
在这里插入图片描述

3 常用命令

nssm install servername //创建servername服务,弹出配置界面
nssm start servername //启动服务
nssm stop servername //暂停服务
nssm restart servername //重新启动服务
nssm remove servername //删除创建的servername服务
nssm edit servername//更改servername服务,弹出修改界面
nssm set servername 参数名 参数值 //设置服务参数值
sc delete servername//windows删除服务命令

更多使用请 cmd 下 help 查看

D:\Program Files\nssm-2.24-101-g897c7ad\win64>nssm.exe --help
NSSM: The non-sucking service manager
Version 2.24-101-g897c7ad 64-bit, 2017-04-26
Usage: nssm <option> [<args> ...]

To show service installation GUI:

        nssm install [<servicename>]

To install a service without confirmation:

        nssm install <servicename> <app> [<args> ...]

To show service editing GUI:

        nssm edit <servicename>

To retrieve or edit service parameters directly:

        nssm dump <servicename>

        nssm get <servicename> <parameter> [<subparameter>]

        nssm set <servicename> <parameter> [<subparameter>] <value>

        nssm reset <servicename> <parameter> [<subparameter>]

To show service removal GUI:

        nssm remove [<servicename>]

To remove a service without confirmation:

        nssm remove <servicename> confirm

To manage a service:

        nssm start <servicename>

        nssm stop <servicename>

        nssm restart <servicename>

        nssm status <servicename>

        nssm statuscode <servicename>

        nssm rotate <servicename>

        nssm processes <servicename>
        

更多推荐