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 通用最稳
相关推荐
kruptos1 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌1 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc2 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库2 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H2 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒3 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP3 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
2601_962382433 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅4 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python
江畔柳前堤4 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native