意外状态SERVICE_START_PENDING响应START控制

joh*_*boy 13 windows-services nssm

当尝试重新启动现有的Windows服务时nssm,我随机获取以下消息,该消息将写入错误日志/错误输出.关于如何纠正的任何想法?理想情况下,接受作为有效的回应.

意外状态SERVICE_START_PENDING响应START控制

A S*_*ANI 1

我认为这个问题是由服务本身引起的。


该服务很可能存在错误并挂起、失败或需要太多时间才能正确停止。当尝试启动它时会出现问题。


如果服务失败:在我看来,有一个潜在的解决方法,即在服务属性中设置服务恢复选项。然后在服务失败时选择“运行程序”。然后编写一个批处理来获取该服务的PID并杀死它,然后使用NSSM再次启动它。

在该批次中您可以使用“SC query”命令来检查服务状态:

C:\Windows>sc query "MyService" | find "STATE"
    STATE              : 3  STOP_PENDING
Run Code Online (Sandbox Code Playgroud)

请注意,如果您仅使用 NSSM 来隐藏窗口,则仅使用任务计划程序即可实现相同的目标。

在任务属性的“常规”选项卡中。如果您选择“无论用户是否登录都运行”,这将从会话 0 运行,不会向您显示任何窗口。

然后,您需要对计划任务执行的操作是,像现在一样终止/重新启动目标进程本身。这将工作得更加稳健。


如果该服务不是官方的 Windows 服务,而是一个 EXE 程序文件(您这边的开发),然后使用 NSSM 转换为服务,则失败的可能性很高。最好将程序重写/重新编译为实际的 Windows 服务。