首页 文章详情

太阳当空照(七)-Windows服务化方式NSSM指令清单

美男子玩编程 | 925 2021-08-27 10:37 0 0 0
UniSMS (合一短信)

点击上方蓝色字体,关注我们



1


指令介绍


参考链接

https://nssm.cc/usage

https://nssm.cc/commands


这些都是建立在管理员权限执行的cmd命令提示符窗口前提下,如果以普通用户执行cmd将提示对应的权限不足问题


管理员启动cmd,并切换路径到nssm所在目录,输入nssm查看相关指令

 >nssm
 NSSM: The non-sucking service manager
 Version 2.24 64-bit, 2014-08-31
 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 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 rotate <servicename>

Install

安装服务,可以设定服务的对应注册的服务名称,也可以不设定,选择时,手动输入

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

servicename需要注册的服务名称

app目标应用的完整路径

args可选参数

Edit

修改服务对应配置,通过弹窗页面进行操作:

 >nssm edit <servicename>

例如,本地以前由nssm注册的服务,Frpc

 >nssm edit Frpc

Set

用于设置nssm中各个页签对应的相关功能参数:

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

parameter参数名称

subparameter下级参数


Application Tab


应用基础配置

指令设置

 nssm set <servicename> Application <fullpath>
 nssm set <servicename> AppDirectory <directory>
 nssm set <servicename> AppParameters [args...]


Details Tab


服务详情

指令设置

 nssm set <servicename> DisplayName <displayname>
 nssm set <servicename> Description <description>
 nssm set <servicename> Start SERVICE_AUTO_START

启动模式清单:

  • SERVICE_AUTO_START: Automatic 自动.

  • SERVICE_DELAYED_AUTO_START: Delayed 自动(延时启动).

  • SERVICE_DEMAND_START: Manual 手动.

  • SERVICE_DISABLED: 禁用.

Log on Tab


登录配置,用于配置当前服务以何种身份进行进程启动,默认为LocalSystem

指令配置

 nssm get <servicename> ObjectName
 nssm set <servicename> ObjectName <username> <password>
 nssm set <servicename> ObjectName <username> correct horse battery staple
 nssm set <servicename> ObjectName <username> ""


Dependencies Tab


配置服务启动依赖项,通过配置依赖服务名称,实现服务依赖配置,配置多个依赖服务有空格分隔,既可以是写入服务的名称name,又可以使服务的显示名称displayname

指令配置

 nssm set <servicename> DependOnService [servicname01] [servicename02]
 nssm set <servicename> DependOnService [service displayname01] [service displayname01]]


Process Tab


进程相关配置,用于设置应用程序的进程优先级和CPU的执行选择,默认情况下应用程序以正常优先级运行,并允许在所有CPU上运行,如希望进程限制为可用CPU的子集,可取消选中"所有处理器"并依据实际情况选择特定CPU

指令配置

 nssm set <servicename> AppPriority NORMAL_PRIORITY_CLASS
 nssm set <servicename> AppNoConsole 0
 nssm set <servicename> AppAffinity All

AppNoConsole设置进程是否新建控制台窗体,默认为0

从版本 2.22 开始,nssm将默认为应用程序创建一个新的控制台窗口,允许一些程序运行,否则会失败,例如那些希望能够读取用户输入的程序

若不需要,可以通过将 HKLM\System\CurrentControlSet\Services\servicename\Parameters 下的整数 (REG_DWORD)AppNoConsole 设置为非零值来禁用控制台窗口

AppAffinity默认设置为进程可在所有CPU上运行,可以指定对应数值,用于特定CPU上运行,连续可用-起始到终止,,逗号用于分隔不同CPU

 nssm set <servicename> AppAffinity 0-4,7

进程优先级配置

  • REALTIME_PRIORITY_CLASS

  • HIGH_PRIORITY_CLASS

  • ABOVE_NORMAL_PRIORITY_CLASS

  • NORMAL_PRIORITY_CLASS

  • BELOW_NORMAL_PRIORITY_CLASS

  • IDLE_PRIORITY_CLASS

Shutdown Tab


停止服务,配置服务停止时,相关停止操作

指令配置

 nssm set <servicename> AppStopMethodSkip 0
 nssm set <servicename> AppStopMethodConsole 1500
 nssm set <servicename> AppStopMethodWindow 1500
 nssm set <servicename> AppStopMethodThreads 1500

AppStopMethodSkip对应属性设置是否选择,默认为0

配置值清单

  • 1 - Don't send Control-C to the console.

  • 2 - Don't send WM_CLOSE to windows.

  • 4 - Don't send WM_QUIT to threads.

  • 8 - Don't call TerminateProcess().


Exit actions Tab


退出操作配置,用于调整服务退出时的重启限制和默认操作,还可以指定应用程序自动重新启动之间的强制延迟

指令配置

 nssm set <servicename> AppThrottle 1500
 nssm set <servicename> AppExit Default Restart
 nssm set <servicename> AppRestartDelay 0

AppThrottle意外退出,延时重启的时间间隔

为避免 CPU 资源紧张,若受监控的应用程序在启动后意外退出,nssm将限制服务的重新启动

默认情况下,使用1500毫秒的阈值,要指定不同的值,需创建一个整数 (REG_DWORD) 值 HKLM\System\CurrentControlSet\Services\servicename\Parameters\AppThrottle 并将其设置为所需的毫秒数

AppExit为要配置应用程序退出时nssm应采取的操作,需编辑键 HKLM\System\CurrentControlSet\Services\servicename\Parameters\AppExit 的默认值

nssm运行时注册表中不存在该键,它将创建它并将值设置为重新启动。将其更改为忽略或退出以指定所采取的操作

nssm只会在此密钥不存在时创建它, 用户的更改不会被覆盖,对应注册表内容如下

  • Default Restart(Restart application)

  • Ignore(No action)

  • Exit(Stop service)

  • Suicide(Fack crash)


I/O Tab


配置文件输出/输出路径,一般为系统异常和日志运行输出日志

配置指令

 nssm set <servicename> AppStdin [filepath]
 nssm set <servicename> AppStdout [filepath]
 nssm set <servicename> AppStderr [filepath]

例如

 >nssm set Frpc AppStderr C:\games\frpc\service.log

File rotation Tab

可与I/O设置结合使用,用于配置服务重启时输出文件的轮换操作

指令配置

 nssm set <servicename> AppStdoutCreationDisposition 4
 nssm set <servicename> AppStderrCreationDisposition 4
 nssm set <servicename> AppRotateFiles 1
 nssm set <servicename> AppRotateOnline 0
 nssm set <servicename> AppRotateSeconds 86400
 nssm set <servicename> AppRotateBytes 104856

AppStdoutCreationDisposition输出CreationDisposition的参数值

AppStderrCreationDisposition异常输出CreationDisposition的参数值

AppRotateFiles是否开启文件轮换操作,1表示启用,0表示取消

AppRotateOnline是否在服务运行时动态轮换日志文件

AppRotateSeconds轮换文件触发时间间隔数

AppRotateBytes轮换文件触发的单文件大小阀值

Environment Tab


可用于指定要传递给应用程序的以换行符分隔的环境变量列表

配置指令

 nssm set <servicename> AppEnvironmentExtra JAVA_HOME=C:\java
 nssm set <servicename> AppEnvironmentExtra CLASSPATH=C:\Classes TEMP=C:\Temp

例如,获取环境变量

 >nssm get <servicename> AppEnvironmentExtra CLASSPATH
 C:\Classes

Get

获取服务特定参数配置

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

Reset

重置服务参数配置

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

Remove

卸载对应安装的服务,通过参数页面进行交互式操作

 >nssm remove [<servicename>]
 
 >nssm remove <servicename> confirm

例如

 >nssm remove Frpc


2


服务管理

start

启动服务

 >nssm start <serivcename>

stop

 >nssm stop <serivcename>

restart

 >nssm restart <serivcename>

status

 >nssm status <serivcename>

rotate

 >nssm rotate <serivcename>

以上即为笔者收集和整理nssm相关的指令配置


往期推荐



点击阅读原文,更精彩~
good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter