停止/启动服务 - 处理STOP_PENDING和START_PENDING

7
3个回答

6

这是我处理停止的方式。

  • 停止命令: sc %host% stop %service% || ECHO ERROR! && EXIT -1
  • 循环等待状态变为STOPPED。循环次数有上限(例如30次)。检测服务是否已停止(例如sc %host% query %service% | find /i "STOPPED")。每次迭代等待几秒钟(例如10秒)。达到最大迭代次数后,尝试使用taskkill杀死进程(例如运行sc queryex Alerter | find /i "PID"找到进程ID)。

5

首先打开 service.msc,进入目标服务的属性对话框,转到恢复选项卡 *(运行 -> services.msc -> 右键单击 Target-Service -> 属性 -> 恢复选项卡*)

确保第一\第二\随后的故障都设置为:不采取任何措施enter image description here

使用 sc queryex ServiceName 获取目标服务的PID:

使用 taskkill /f /pid your_PID_number 杀死该进程。


1
到目前为止,这是最好的答案。无论如何,这个答案都会起作用。 - Akito
2
如何终止处于STOP_PENDING状态且PID编号为0的任务? - madduci
除了像我这种情况下没有返回PID之外,@Akito。 - Blaisem

3

有时当我打开窗口 services.msc 时,一个“Windows服务”会挂起。我无法终止该进程,也无法使用 net stopsc stop

但是当我关闭 services.msc 窗口时,该服务立即停止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接