Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理

https://nssm.cc/ci/nssm-2.24-101-g897c7ad.zip

nssm官网下载地址

如果不能访问,网盘自取

下载通道:夸克盘

一、nssm 是什么?一句话先立住

NSSM(Non-Sucking Service Manager) 是一个 把"普通 Windows 程序"包装成"标准 Windows 服务" 的工具。

👉 核心用途只有一个:

解决"这个程序不是服务,Windows 服务管理器启动不了它"的问题

版本 2.24 是目前 最稳定、使用最广的生产版本。


二、nssm 主要解决什么问题(非常关键)

Windows 服务的硬性要求

Windows 原生服务必须:

  • 调用 StartServiceCtrlDispatcher

  • 实现 ServiceMain / Handler

  • 能被 SCM(Service Control Manager)管理

👉 而下面这些程序都做不到:

程序类型 典型例子
Java 程序 java -jar xxx.jar
Python 程序 python app.py
Node.js node index.js
Go / C++ 普通 exe 未按 Service API 编写
第三方中间件 Redis、Nacos、MinIO(Windows版)
内部工具 自研采集器、Agent

➡ 直接用 sc create / 服务管理器启动 = 必炸


nssm 的工作原理(很重要)

复制代码
Windows 服务
   ↓
nssm.exe  ← 真正注册成服务的程序
   ↓
你真正要跑的 exe / bat / cmd / java

nssm 做了 5 件关键的事:

  1. 把自己注册成 合法 Windows 服务

  2. 启动你的目标程序

  3. 监听进程状态

  4. 程序异常退出 → 自动重启

  5. 处理 stdin / stdout / 日志 / 信号


三、什么时候"必须"用 nssm(典型报错触发场景)

下面这些 报错一出现,90% 就该用 nssm 👇


❌ 报错 1:Error 1053(最常见)

复制代码
Error 1053: The service did not respond to the start or control request in a timely fashion

原因

  • 你注册的是 普通程序

  • Windows 等不到 ServiceMain 回调

解决方案

✅ 用 nssm 包装该程序


❌ 报错 2:Error 1067

复制代码
The process terminated unexpectedly

原因

  • 程序被当成服务启动

  • 立刻退出

解决方案

✅ nssm + 自动重启策略


❌ 报错 3:服务"启动后立即停止"

复制代码
服务正在启动...
服务已停止

原因

  • 程序是前台程序

  • SCM 认为它"不合法"

解决方案

✅ nssm 托管进程生命周期


❌ 报错 4:Java / Python 程序无法后台运行

复制代码
java.exe 退出
python.exe 无日志

原因

  • 没有控制台

  • stdin/stdout 丢失

解决方案

✅ nssm 重定向日志


❌ 报错 5:程序关不掉 / 关机卡死

复制代码
Windows is shutting down...

原因

  • 程序收不到 stop 信号

解决方案

✅ nssm 发送 CTRL+C / WM_CLOSE


四、nssm 2.24 基本使用(实操)

4.1 下载与准备

  • 文件:nssm.exe

  • 推荐放置路径:

    C:\nssm\nssm.exe

⚠ 一定用管理员权限


4.2 最简单的服务注册(GUI)

复制代码
cd C:\nssm
nssm install MyService

会弹出 GUI 窗口:

Application 页面(最重要)

字段 填什么
Path 程序路径(exe / cmd / java.exe)
Arguments 参数(如 -jar app.jar)
Startup directory 程序工作目录

示例:Java 程序

复制代码
Path: C:\Java\bin\java.exe
Arguments: -jar app.jar
Startup directory: D:\app

点击 Install service


4.3 命令行方式(推荐生产)

复制代码
nssm install MyService ^
  "C:\Java\bin\java.exe" ^
  "-jar app.jar"

设置工作目录:

复制代码
nssm set MyService AppDirectory D:\app

五、非常重要的高级配置(强烈建议)

5.1 日志重定向(避免"啥也没有")

复制代码
nssm set MyService AppStdout D:\logs\out.log
nssm set MyService AppStderr D:\logs\err.log

👉 解决:

  • 服务启动失败无日志

  • 程序异常无输出


5.2 自动重启(生产必配)

复制代码
nssm set MyService AppExit Default Restart

5.3 优雅停止(防数据损坏)

复制代码
nssm set MyService AppStopMethodConsole 1500
nssm set MyService AppStopMethodWindow 1500
nssm set MyService AppStopMethodThreads 1500

六、常见 nssm 相关报错与解决

❌ 报错:The system cannot find the file specified

原因:

  • Path 写的是 java

  • 没写绝对路径

✅ 正确:

复制代码
C:\Java\bin\java.exe

❌ 报错:服务启动成功但程序没运行

原因:

  • Startup directory 没设置

  • 相对路径 jar 找不到

✅ 解决:

复制代码
nssm set MyService AppDirectory D:\app

❌ 报错:中文路径程序无法启动

原因:

  • 程序不支持 Unicode

  • 控制台编码问题

✅ 解决:

  • 尽量避免中文路径

  • 或用 cmd 包一层


❌ 报错:服务删除后还在

复制代码
sc delete MyService

或

复制代码
nssm remove MyService confirm

七、nssm vs 其他方式(对比结论)

方式 是否推荐
sc create ❌(只能服务程序)
srvany ❌(已废弃)
WinSW ⚠️(适合 .NET)
Task Scheduler ❌(不可控)
nssm ✅ 通用最稳
相关推荐
默_笙5 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
rockmelodies5 天前
# Windows Server2008 R2 Standard(SP1镜像U盘)重置本地管理员密码【完整详细步骤】
windows·密码破解
qq_426003965 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技5 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时5 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++
奇思妙想聪明勤奋的小羊5 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型