【问题标题】:Stop a Windows service and wait for it to stop by itself as opposed to get it killed by Windoes after +-15sec停止 Windows 服务并等待它自行停止,而不是在 +-15 秒后被 Windows 杀死
【发布时间】:2020-01-11 21:52:13
【问题描述】:

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

我试图让 每天两次停止某些服务。这是我的批处理文件的内容:

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? 32 位还是 64 位?处理文件的过程是什么?为什么你说你想停止服务但你的批处理文件停止并启动服务?为什么你说你的第一个服务是activity launcher 而你的批处理文件却是primusactivitylauncher

标签: batch-file windows batch-file service timeout


【解决方案1】:

我建议在以下语法返回 0 之前运行循环检查:

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

它只会在 PrimusActivityLauncher 停止后返回 0,并且会一直等待直到发生这种情况。如果你想坚持你的加/减 15 秒,你可以用计数器或其他形式的超时编码。根据需要为任何服务名称修改此内容,例如 MSSQLSERVER/Primus*/Etc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2016-09-03
    相关资源
    最近更新 更多