停止Windows服务,等待它自己停止,而不是在+ -15秒后被Windoes杀死

问题描述 投票:0回答:1

我是新来的,已经读了很多问题,但这实际上是我第一次发布问题。

我正在尝试获取,以每天两次停止某些服务。这是我的批处理文件的内容:

net Stop "PrimusActivityLauncher"
net Stop "PrimusDesigntimeServiceHost (Designer)"
net Stop "PrimusDesigntimeServiceHost (SystemMonitor)"
net Stop "PrimusRuntimeServiceHost (Authentication)"
net Stop "PrimusRuntimeServiceHost (Configuration)"
net Stop "PrimusRuntimeServiceHost (Document)"
net Stop "PrimusRuntimeServiceHost (Process)"
net Stop "PrimusRuntimeServiceHost (SystemMonitor)"


net Stop "MSSQLSERVER"
net Start "MSSQLSERVER"
net Start "PrimusActivityLauncher"
net Start "PrimusDesigntimeServiceHost (Designer)"
net Start "PrimusDesigntimeServiceHost (SystemMonitor)"
net Start "PrimusRuntimeServiceHost (Authentication)"
net Start "PrimusRuntimeServiceHost (Configuration)"
net Start "PrimusRuntimeServiceHost (Document)"
net Start "PrimusRuntimeServiceHost (Process)"

iisreset /start

这里的问题是,当我尝试停止第一个服务(Activity Launcher)时,它在我的平台有时间完成文档处理之前超时。我需要找到一种方法来让批处理文件等待文档完成处理,以实际停止服务而不是终止服务。我试图在regedit中更改超时的值,但重新启动服务器后未考虑此更改。我会找到一种方法来指定窗口,使其至少等待10-15分钟,然后在服务超时后立即终止该服务。

有什么想法吗?

windows batch-file service timeout
1个回答
0
投票

我建议运行循环检查,直到以下语法返回0:

wmic service list brief | find "Stopped" | find "PrimusActivityLauncher"

一旦PrimusActivityLauncher停止,它只会返回0,并将永远等待直到发生这种情况。如果要坚持加减15秒,则可以用计数器或其他形式的超时进行编码。为您需要的任何服务名称(例如MSSQLSERVER / Primus * / Etc)诊断此名称。

© www.soinside.com 2019 - 2024. All rights reserved.