如果 Windows 服务崩溃,如何自动重新启动它?

Lia*_*iam 63 windows windows-service

我有一个 Windows 服务,每隔几天就会意外退出。有没有一种简单的方法来监控它以确保它在崩溃时快速重启?

Chr*_*wis 89

在服务应用程序下,选择相关服务的属性。

查看恢复选项卡 - 有各种选项 - 我将设置 First & Second Failure to Restart the Service,第三次运行批处理程序,BLAT会发出带有第三次失败通知的电子邮件。

您还应该将重置失败计数设置为 1 以每天重置失败计数。

编辑:

看起来您可以通过命令行执行此操作:

SC failure w3svc reset= 432000  actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"
Run Code Online (Sandbox Code Playgroud)

您的 MyBatchFile.CMD 文件可能如下所示:

blat - -body "Service W3svc Failed" -subject "SERVICE ERROR" -to Notify@Example.com -server SMTP.Example.com -f Administrator@Example.com
Run Code Online (Sandbox Code Playgroud)

  • 都是好东西,但 +1 特别是对于电子邮件通知建议和命令行的东西。 (4认同)

小智 10

打开 Services.msc,双击服务打开服务的属性,有一个恢复选项卡,这些设置应该允许您在失败时重新启动服务。


小智 6

尝试将恢复时间设置为零:

在此处输入图片说明

命令行等效:

SC failure YOUR_SERVICE_NAME reset= 0 actions= restart/0/restart/0/restart/0

无论如何,有时自动恢复无法正常工作,建议使用第三方软件。当服务以 0 个窗口的退出代码正常退出时,似乎不会尝试恢复它。


Max*_*ell 0

这是我在类似主题上的回答希望这会有所帮助......

如果需要,您可以安排一个像这样的简单 vbs 脚本来定期重新启动计算机上的服务。

str计算机=“。”
strSvcName =“您的服务名称”
设置 objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
设置 objService = objWMI.Get("Win32_Service.Name='" & strSvcName & "'")
如果 objService.State=“已停止”则
    objService.StartService()
万一