将nssm命令行安装服务做个详细的中文说明
以下是将 NSSM 使用命令行安装 Windows 服务的详细中文说明。通过命令行安装服务是 NSSM 的一种常见用法,它允许用户快速、批量或脚本化地配置服务,而无需依赖图形界面(GUI)。我会逐步分解命令行的使用方式,并提供示例和注意事项,帮助你全面掌握。
基本概念
NSSM(Non-Sucking Service Manager)通过命令行工具 nssm.exe 提供服务管理功能。命令行安装服务的主要步骤包括:
- 安装服务: 使用 nssm install 命令创建服务。
- 配置服务: 使用 nssm set 命令设置服务的参数(如路径、参数、重启策略等)。
- 启动服务: 使用 nssm start 命令运行服务。
- 管理服务: 使用其他命令(如 stop、remove)进行后续操作。
所有命令都需要以管理员权限运行(例如通过管理员模式的命令提示符或 PowerShell)。
安装服务的详细步骤
1. 基本安装命令
- 语法:
nssm install <服务名> [应用程序路径] [参数]
- 说明:
<服务名>:你为服务起的名称,唯一标识服务,必须是英文或数字,不能包含空格或特殊字符。
[应用程序路径]:目标可执行文件的完整路径(可选,留空则后续配置)。
[参数]:传递给应用程序的启动参数(可选)。
- 示例:
nssm install MyService "C:\Program Files\MyApp\myapp.exe" "--verbose"
这会创建一个名为 MyService 的服务,运行 myapp.exe,并传递参数 --verbose。
- 结果:
如果不指定路径和参数,NSSM 会创建一个空服务,之后需要用 nssm set 命令补充配置。
服务会注册到 Windows 服务列表中,可通过 services.msc 查看。
2. 配置服务参数
安装服务后,可以通过 nssm set 命令调整服务的各种属性。语法如下:
nssm set <服务名> <参数名> <值>
以下是一些常用参数的详细说明:
应用程序路径和工作目录:
Application:目标可执行文件的路径。
AppDirectory:应用程序的工作目录。
示例:
nssm set MyService Application "C:\Program Files\MyApp\myapp.exe"
nssm set MyService AppDirectory "C:\Program Files\MyApp"
启动参数:
AppParameters:传递给应用程序的命令行参数。
示例:
nssm set MyService AppParameters "--verbose --port=8080"
启动类型:
Start:服务的启动类型。
可选值:SERVICE_AUTO_START(自动启动)、SERVICE_DELAYED_START(延迟启动)、SERVICE_DEMAND_START(手动启动)、SERVICE_DISABLED(禁用)。
示例:
nssm set MyService Start SERVICE_DELAYED_START
显示名称:
DisplayName:服务在 services.msc 中显示的友好名称(支持中文)。
示例:
nssm set MyService DisplayName "我的应用程序服务"
日志输出:
AppStdout:标准输出重定向到文件。
AppStderr:标准错误重定向到文件。
示例:
nssm set MyService AppStdout "C:\logs\myapp.log"
nssm set MyService AppStderr "C:\logs\myapp_err.log"
运行账户:
ObjectName:指定服务运行的账户(默认是 LocalSystem)。
示例(需提供密码):
nssm set MyService ObjectName ".\MyUser" "MyPassword"
重启延迟:
AppThrottle:应用程序退出后重启的延迟时间(单位:毫秒)。
示例:
nssm set MyService AppThrottle 5000 # 5秒延迟
3. 启动服务
语法:
nssm start <服务名>
示例:
nssm start MyService
说明:
启动服务后,NSSM 会根据配置运行目标应用程序,并开始监控其状态。
4. 验证服务
- 检查服务是否在运行:
nssm status MyService
返回状态可能是 SERVICE_RUNNING(运行中)、SERVICE_STOPPED(已停止)等。
- 或使用 Windows 服务管理器:
services.msc
找到你的服务名,查看其状态。
5. 停止和删除服务(可选)
停止服务:
nssm stop MyService
删除服务:
nssm remove MyService confirm
注意: confirm 是必须的确认参数,避免误删。
完整示例:安装一个 Python 服务
假设你有一个 Python 脚本 C:\scripts\my_script.py,想将其作为服务运行:
1. 安装服务:
nssm install PythonService "C:\Python39\python.exe" "C:\scripts\my_script.py"
这里指定 Python 解释器运行脚本。
2. 设置工作目录和日志:
nssm set PythonService AppDirectory "C:\scripts"
nssm set PythonService AppStdout "C:\logs\python.log"
nssm set PythonService AppStderr "C:\logs\python_err.log"
3. 设置为延迟启动:
nssm set PythonService Start SERVICE_DELAYED_START
4. 设置显示名称:
nssm set PythonService DisplayName "我的 Python 服务"
5.启动服务:
nssm start PythonService
6.验证:
nssm status PythonService
检查日志文件 C:\logs\python.log 是否有输出。
高级配置示例
设置日志轮转
nssm set MyService AppRotateFiles 1
nssm set MyService AppRotateBytes 1048576 # 1MB
nssm set MyService AppRotateSeconds 86400 # 每天轮转
指定 CPU 亲和性和优先级
nssm set MyService AppAffinity 3 # 使用 CPU0 和 CPU1
nssm set MyService AppPriority ABOVE_NORMAL_PRIORITY_CLASS
设置依赖服务
nssm set MyService DependOnService MSSQLSERVER
注意事项
1.路径中的空格:
如果路径或参数中包含空格,必须用双引号括起来。例如:
nssm set MyService Application "C:\Program Files\MyApp\myapp.exe"
2.管理员权限:
必须以管理员身份运行命令,否则会提示权限不足。
3.参数大小写:
NSSM 的参数名(如 Application、AppStdout)对大小写不敏感,但建议保持一致。
4.查看当前配置:
使用 nssm get 查看某个参数的值:
nssm get MyService Application
5.脚本化安装:
可以将命令写入 .bat 文件,实现批量安装。例如:
bat
@echo off
nssm install MyService "C:\path\to\myapp.exe"
nssm set MyService AppStdout "C:\logs\myapp.log"
nssm start MyService
6.错误排查:
如果服务无法启动,检查:
- 日志文件(AppStdout 和 AppStderr)。
- Windows 事件查看器(eventvwr)。
- 确保路径和权限正确。
总结
使用 NSSM 命令行安装服务非常灵活,只需几条命令即可完成服务的创建和配置。通过 install 创建服务、set 调整参数、start 启动服务,你可以快速将任何应用程序转为 Windows 服务。结合高级选项(如日志轮转、依赖关系、账户设置),NSSM 能满足大多数复杂需求。如果需要进一步调整,可以随时用 nssm edit <服务名> 打开 GUI 界面进行可视化修改。