NSSM(Non-Sucking Service Manager)是一个开源的 Windows 服务管理工具,它可以帮助用户将任何可执行程序转换为一个 Windows 服务。下面是 NSSM 的初级使用教程大纲,包括基本命令和使用方式:
NSSM(Non-Sucking Service Manager)是一个开源的 Windows 服务管理工具,它可以帮助用户将任何可执行程序转换为一个 Windows 服务。下面是 NSSM 的初级应用大纲,包括基本命令和使用方式:
1. 安装 NSSM
- 下载 NSSM 的最新版本安装包。
- 解压安装包,并将 nssm.exe 复制到一个方便访问的路径,如
C:\nssm\
。
2. 创建和管理服务
创建新服务
- 打开命令提示符 (cmd.exe) 或 PowerShell。
- 使用
nssm install <ServiceName>
命令来创建一个新的服务。- 示例:
nssm install MyServiceName
- 示例:
- 弹出一个图形界面,可以设置服务的详细信息,如路径、启动参数、工作目录等,也可以在命令行中直接配置。
删除服务
- 使用
nssm remove <ServiceName>
命令来删除一个已存在的服务。- 示例:
nssm remove MyServiceName
- 示例:
3. 配置服务
设置服务的可执行程序
- 在 NSSM 的配置界面或命令行中指定要作为服务运行的可执行文件的路径。
- 示例:
nssm set MyServiceName ApplicationPath "C:\path\to\executable.exe"
- 示例:
设置服务的启动参数和工作目录
- 使用
nssm set <ServiceName>
命令来配置服务的启动参数和工作目录。- 示例:
nssm set MyServiceName AppParameters "-param1 value1"
- 示例:
nssm set MyServiceName AppDirectory "C:\path\to\working\directory"
- 示例:
配置服务的启动类型和用户权限
- 使用
nssm set <ServiceName>
命令来设置服务的启动类型(自动、手动、禁用)和登录账号。- 示例:
nssm set MyServiceName Start SERVICE_AUTO_START
- 示例:
nssm set MyServiceName ObjectName "LocalSystem"
- 示例:
4. 启动和停止服务
- 使用
nssm start <ServiceName>
命令来启动服务。- 示例:
nssm start MyServiceName
- 示例:
- 使用
nssm stop <ServiceName>
命令来停止服务。- 示例:
nssm stop MyServiceName
- 示例:
5. 查看和调试服务
- 使用
nssm status <ServiceName>
命令来查看服务的当前状态。- 示例:
nssm status MyServiceName
- 示例:
- 使用
nssm restart <ServiceName>
命令来重新启动服务。- 示例:
nssm restart MyServiceName
- 示例:
6. 日志和错误处理
- NSSM 会生成日志文件以记录服务的运行状态和错误信息,通常位于服务安装目录下的
nssm.log
文件中。可用于排查服务启动或运行时的问题。
注意事项
- 确保以管理员身份运行命令提示符或 PowerShell。
- 在使用 NSSM 创建服务时,务必详细阅读和理解 NSSM 提供的各个配置选项,特别是路径、权限、启动类型等设置,以确保服务能够按预期运行。
以上是 NSSM 初级应用的基本大纲和命令示例,希望能够帮助您理解如何使用 NSSM 管理 Windows 服务。
NSSM 中级应用大纲
NSSM(Non-Sucking Service Manager)提供了丰富的功能和选项,用于更高级的 Windows 服务管理和配置。以下是 NSSM 中级应用的大纲,涵盖了更复杂和深入的任务和配置:
1. 安全和权限设置
设置服务的登录账号和权限
- 使用
nssm set <ServiceName> ObjectName "<AccountName>"
命令来指定服务运行时的登录账号。- 示例:
nssm set MyServiceName ObjectName "DOMAIN\User"
- 示例:
配置服务的安全选项
- 使用
nssm set <ServiceName> AppAllowServiceLogon
和nssm set <ServiceName> AppDisallowInteractiveLogon
命令来配置服务的允许服务登录和禁止交互登录选项。
2. 高级启动选项
启动和恢复选项
- 使用
nssm set <ServiceName> Start SERVICE_*
命令来设置服务的启动类型,如自动启动、手动启动或禁用。- 示例:
nssm set MyServiceName Start SERVICE_AUTO_START
- 示例:
设置服务启动和失败时的操作
- 使用
nssm set <ServiceName> AppRestartDelay <Seconds>
和nssm set <ServiceName> AppFailureActions <ResetPeriod> <RebootMsg>
命令来配置服务的重启延迟和失败操作选项。
3. 进程控制和监控
监控和重启服务进程
- 使用
nssm set <ServiceName> AppRotateFiles
命令来设置在达到文件大小限制时轮转日志文件。- 示例:
nssm set MyServiceName AppRotateFiles <FileSize> <FileCount>
- 示例:
控制服务进程优先级
- 使用
nssm set <ServiceName> AppPriority <Priority>
命令来设置服务进程的优先级。- 示例:
nssm set MyServiceName AppPriority HIGH
- 示例:
4. 故障排除和日志记录
配置详细日志记录
- 使用
nssm set <ServiceName> AppStdout <LogFilePath>
和nssm set <ServiceName> AppStderr <LogFilePath>
命令来设置服务的标准输出和错误输出的日志文件路径。
查看服务状态和日志
- 使用
nssm status <ServiceName>
命令来查看服务的当前状态和运行日志,以便快速诊断和故障排除。
5. 扩展和自定义选项
利用 NSSM 的扩展功能
- NSSM 支持使用插件和扩展来增强其功能,可以根据需求进行定制和配置。
这些是 NSSM 中级应用的主要大纲和命令示例,希望能帮助您更深入地理解和使用 NSSM 进行复杂的 Windows 服务管理和配置。
NSSM 进行高级应用时,可以探索一些更复杂和深入的功能和配置选项。以下是 NSSM 高级应用的大纲和命令示例:
1. 安全和权限设置
1.1 设置服务的登录账号和权限
nssm set <ServiceName> ObjectName "<AccountName>"
示例:
nssm set MyServiceName ObjectName "DOMAIN\User"
1.2 配置服务的安全选项
nssm set <ServiceName> AppAllowServiceLogon
nssm set <ServiceName> AppDisallowInteractiveLogon
2. 高级启动选项
2.1 启动和恢复选项
nssm set <ServiceName> Start SERVICE_*
示例:
nssm set MyServiceName Start SERVICE_AUTO_START
2.2 设置服务启动和失败时的操作
nssm set <ServiceName> AppRestartDelay <Seconds>
nssm set <ServiceName> AppFailureActions <ResetPeriod> <RebootMsg>
3. 进程控制和监控
3.1 监控和重启服务进程
nssm set <ServiceName> AppRotateFiles <FileSize> <FileCount>
示例:
nssm set MyServiceName AppRotateFiles 1024 5
3.2 控制服务进程优先级
nssm set <ServiceName> AppPriority <Priority>
示例:
nssm set MyServiceName AppPriority HIGH
4. 故障排除和日志记录
4.1 配置详细日志记录
nssm set <ServiceName> AppStdout <LogFilePath>
nssm set <ServiceName> AppStderr <LogFilePath>
示例:
nssm set MyServiceName AppStdout C:\Logs\stdout.log
nssm set MyServiceName AppStderr C:\Logs\stderr.log
4.2 查看服务状态和日志
nssm status <ServiceName>
5. 扩展和自定义选项
5.1 利用 NSSM 的扩展功能
NSSM 支持使用插件和扩展来增强其功能,可以根据需求进行定制和配置。
这些命令和示例展示了如何使用 NSSM 进行更高级的服务管理和配置。每个命令都有其具体的参数和用法,可以根据实际需求进行调整和应用。
NSSM 的专家级应用,可以深入探索更复杂和高级的功能和配置选项。以下是 NSSM 专家级应用的大纲和命令示例:
1. 进程控制和监控
1.1 控制服务进程的优先级和亲和性
nssm set <ServiceName> AppPriority <Priority>
nssm set <ServiceName> AppAffinity <AffinityMask>
示例:
nssm set MyServiceName AppPriority HIGH
nssm set MyServiceName AppAffinity 0x1 ; 使用第一个 CPU 核心
1.2 设置服务的进程 CPU 和内存限制
nssm set <ServiceName> AppCPUTimeLimit <Seconds>
nssm set <ServiceName> AppMemoryLimit <Bytes>
示例:
nssm set MyServiceName AppCPUTimeLimit 3600 ; 限制服务运行的 CPU 时间为 3600 秒
nssm set MyServiceName AppMemoryLimit 536870912 ; 限制服务占用的内存为 512 MB
2. 高级日志和调试选项
2.1 配置详细的调试日志
nssm set <ServiceName> AppEnvironmentAppend <VariableName>=<Value>
nssm set <ServiceName> AppStopMethodSkip <Method>
示例:
nssm set MyServiceName AppEnvironmentAppend DEBUG=1 ; 设置环境变量以启用调试模式
nssm set MyServiceName AppStopMethodSkip 5 ; 忽略停止方法 5 的调用,用于特定的停止场景处理
3. 多实例和负载均衡配置
3.1 配置多实例和服务互斥
nssm set <ServiceName> AppInstances <Number>
nssm set <ServiceName> AppMutex <MutexName>
示例:
nssm set MyServiceName AppInstances 5 ; 设置服务的最大实例数为 5
nssm set MyServiceName AppMutex MyServiceMutex ; 指定服务的互斥对象名称
4. 高级安全和权限设置
4.1 配置服务的安全描述符和权限
nssm set <ServiceName> AppSecurityDescriptor <DescriptorString>
nssm set <ServiceName> AppServiceSidType <SidType>
示例:
nssm set MyServiceName AppSecurityDescriptor "D:(A;;GA;;;S-1-5-32-544)(A;;GA;;;BA)(A;;GRGWGX;;;WD)"
nssm set MyServiceName AppServiceSidType Unrestricted ; 设置服务的安全标识类型为无限制
5. 扩展和自定义选项
5.1 使用 NSSM 插件和扩展
NSSM 支持使用第三方插件和自定义扩展,以增强服务的功能和定制选项。
这些命令和示例展示了如何在 NSSM 中进行专家级的服务管理和配置,涵盖了更复杂的需求和高级的操作。根据实际情况,可以灵活调整和应用这些功能,以满足特定的服务部署和管理要求。
NSSM(Non-Sucking Service Manager)进行顶尖级应用时,可以探索一些高级的功能和配置选项,以实现更灵活和强大的服务管理。以下是 NSSM 的顶尖级应用大纲,涵盖了高级功能和相关命令示例:
1. 进程控制和监控
1.1 控制服务进程的优先级和亲和性
nssm set <ServiceName> AppPriority <Priority>
nssm set <ServiceName> AppAffinity <AffinityMask>
示例:
nssm set MyServiceName AppPriority HIGH
nssm set MyServiceName AppAffinity 0x1 ; 将服务限制在第一个 CPU 核心上
1.2 设置服务的进程 CPU 和内存限制
nssm set <ServiceName> AppCPUTimeLimit <Seconds>
nssm set <ServiceName> AppMemoryLimit <Bytes>
示例:
nssm set MyServiceName AppCPUTimeLimit 3600 ; 限制服务运行的 CPU 时间为 3600 秒
nssm set MyServiceName AppMemoryLimit 536870912 ; 限制服务占用的内存为 512 MB
2. 高级日志和调试选项
2.1 配置详细的调试日志
nssm set <ServiceName> AppStdout <LogFile>
nssm set <ServiceName> AppStderr <LogFile>
示例:
nssm set MyServiceName AppStdout C:\Logs\MyService_stdout.log ; 将标准输出重定向到指定文件
nssm set MyServiceName AppStderr C:\Logs\MyService_stderr.log ; 将标准错误输出重定向到指定文件
3. 高级安全和权限设置
3.1 配置服务的安全描述符和权限
nssm set <ServiceName> AppSecurityDescriptor <DescriptorString>
nssm set <ServiceName> AppRotateFiles <True/False>
示例:
nssm set MyServiceName AppSecurityDescriptor "D:(A;;GA;;;S-1-5-32-544)(A;;GA;;;BA)(A;;GRGWGX;;;WD)" ; 配置服务的安全描述符
nssm set MyServiceName AppRotateFiles true ; 启用日志文件轮换功能
4. 多实例和负载均衡配置
4.1 配置多实例和服务互斥
nssm set <ServiceName> AppInstances <Number>
nssm set <ServiceName> AppMutex <MutexName>
示例:
nssm set MyServiceName AppInstances 5 ; 设置服务的最大实例数为 5
nssm set MyServiceName AppMutex MyServiceMutex ; 指定服务的互斥对象名称
5. 扩展和自定义选项
5.1 使用 NSSM 插件和扩展
NSSM 支持使用第三方插件和自定义扩展,以增强服务的功能和定制选项。
这些命令和示例展示了如何在 NSSM 中利用顶尖级的功能进行服务管理和配置,适用于需要高度灵活性和可配置性的场景。根据具体需求,可以深入探索和调整这些选项,以实现最佳的服务部署和管理效果。