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 通用最稳
相关推荐
用户8356290780517 小时前
Python 自动化 Word 文本框处理:创建、定位、填充内容与管理
后端·python
汉字萌萌哒7 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
叠层归一研究院7 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
小雨笙笙7 小时前
C语言:变量三属性——存储类型
c语言·开发语言
数据知道8 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
果果燕8 小时前
C++ 学习笔记(二):类与对象—— 构造函数与析构函数
开发语言·c++
江畔柳前堤8 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php
2601_949950638 小时前
Java 面试准备,用练题簿把“背过八股”变成“真正会答”
java·开发语言·面试·刷题·小程序推荐
努力的小Qin9 小时前
梯度下降如何实现参数优化:从线性回归到 Sigmoid 分类
人工智能·python·神经网络
strength_zhou20139 小时前
Python检查MongoDB索引列中的字段是否存在
python·mongodb