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 通用最稳
相关推荐
CHANG_THE_WORLD24 分钟前
python 批量终止进程exe
开发语言·python
古城小栈25 分钟前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
liann11930 分钟前
3.2_红队攻击框架--MITRE ATT&CK‌
python·网络协议·安全·网络安全·系统安全·信息与通信
云天AI实战派40 分钟前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
我的xiaodoujiao1 小时前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
Gary Studio2 小时前
安卓HAL C++基础-智能指针
开发语言·c++
啧不应该啊2 小时前
Day1 Python 与 C 的类型区别
c语言·开发语言
多思考少编码2 小时前
PAT甲级真题1001 - 1005题详细题解(C++)(个人题解)
c++·python·最短路·pat·算法竞赛
cen__y2 小时前
Linux07(信号01)
linux·运维·服务器·c语言·开发语言
ZhengEnCi2 小时前
M5-markconv自定义CSS样式指南 📝
前端·css·python