В соответствии с Сервисным приложением, выберите свойства рассматриваемого сервиса.
Просмотрите вкладку восстановления - существуют все виды опций - я установил Первый и Второй Отказ Перезапустить Сервис, Треть для выполнения пакетной программы что BLAT's электронное письмо с третьим уведомлением об отказе.
Необходимо также установить количество Сбоя Сброса на 1 для сброса количества сбоя ежедневно.
Править:
Похож на Вас, может сделать это через командную строку:
SC failure w3svc reset= 432000 actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"
Ваш MyBatchFile. Командный файл может быть похожим на это:
blat - -body "Service W3svc Failed" -subject "SERVICE ERROR" -to Notify@Example.com -server SMTP.Example.com -f Administrator@Example.com
Откройте Services.msc, дважды щелкните по сервису для открытия Properties сервиса, существует вкладка Recovery, и те настройки должны позволить Вам перезапускать сервис на отказ.
Это было моим ответом на подобном потоке Hope, которой это помогает...
Можно запланировать простой vbs сценарий как этот для перезапуска периодически сервиса на компьютер в случае необходимости.
strComputer = "." strSvcName = "YOUR_SERVICE_NAME" set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") set objService = objWMI.Get("Win32_Service.Name='" & strSvcName & "'") If objService.State= "Stopped" Then objService.StartService() End If
Я использую ServiceKeeper на своем сервере окон 2008 в HostForLife.eu, и он работает очень хороший. Ранее, у меня был обзор на ServiceHawk, но я предпочитаю использовать ServiceKeeper для его более легкого управления и интерфейса.
Кто-то задал подобный вопрос в Суперпользователе: Вы могли установить инструмент, который контролирует сервисы окон. Что-то как Сервисный Ястреб помогло бы Вам сохранить сервисы запущенными или позволить Вам планировать автоматические перезапуски (возможно в течение ночи) для поддерживания сервиса в рабочем состоянии гладко.
У меня было аналогичное требование для запуска службы в случае остановки. Самым простым решением, которое я подумал, было выполнение следующей команды в планировщике задач Windows каждые 5 минут:
net start MyServiceName
Эта команда в основном запускает службу (если она остановлена) и не имеет никакого эффекта, если служба уже запущена.
Недавно я реализовал вариант восстановления для запуска сценария PowerShell, который пытается для перезапуска службы определенное количество раз и отправки уведомления по электронной почте при завершении, он также.
После нескольких попыток (и несмотря на все остальное, что я видел) Конфигурация полей на вкладке восстановления в службах следующая:
Программа: Powershell.exe
** Не C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe
Параметры командной строки: -command "& {SomePath \ YourScript.ps1 '$ args [0]' '$ args [1]' '$ args [n]'} "
например: -command" & {C: \ PowershellScripts \ ServicesRecovery.ps1 'Service Name'} "
** $ args - это параметры, которые будут переданы вашему скрипту . Это не обязательно.
вот сценарий powershell:
cd $PSScriptRoot
$n = $args[0]
function CreateLogFile {
$events = Get-EventLog -LogName Application -Source SomeSource -Newest 40
if (!(Test-Path "c:\temp")) {
New-Item -Path "c:\temp" -Type directory}
if (!(Test-Path "c:\temp\ServicesLogs.txt")) {
New-Item -Path "c:\temp" -Type File -Name "ServicesLogs.txt"}
$events | Out-File -width 600 c:\temp\ServicesLogs.txt
}
function SendEmail {
$EmailServer = "SMTP Server"
$ToAddress = "Name@domain.com"
$FromAddress = "Name@domain.com"
CreateLogFile
$Retrycount = $Retrycount + 1
send-mailmessage -SmtpServer $EmailServer -Priority High -To $ToAddress -From $FromAddress -Subject "$n Service failure" `
-Body "The $n service on server $env:COMPUTERNAME has stopped and was unable to be restarted after $Retrycount attempts." -Attachments c:\temp\ServicesLogs.txt
Remove-Item "c:\temp\ServicesLogs.txt"
}
function SendEmailFail {
$EmailServer = "SMTP Server"
$ToAddress = "Name@domain.com"
$FromAddress = "Name@domain.com"
CreateLogFile
$Retrycount = $Retrycount + 1
send-mailmessage -SmtpServer $EmailServer -Priority High -To $ToAddress -From $FromAddress -Subject "$n Service Restarted" `
-Body "The $n service on server $env:COMPUTERNAME stopped and was successfully restarted after $Retrycount attempts. The relevant system logs are attached." -Attachments c:\temp\ServicesLogs.txt
Remove-Item "c:\temp\ServicesLogs.txt"
}
function StartService {
$Stoploop = $false
do {
if ($Retrycount -gt 3){
$Stoploop = $true
SendEmail
Break
}
$i = Get-WmiObject win32_service | ?{$_.Name -imatch $n} | select Name, State, StartMode
if ($i.State -ne "Running" -and $i.StartMode -ne "Disabled") {
sc.exe start $n
Start-Sleep -Seconds 35
$i = Get-WmiObject win32_service | ?{$_.Name -imatch $n} | select State
if ($i.state -eq "Running"){
$Stoploop = $true
SendEmailFail}
else {$Retrycount = $Retrycount + 1}
}
}
While ($Stoploop -eq $false)
}
[int]$Retrycount = "0"
StartService
Intenteu establir el temps de recuperació a zero:
L'equivalent a la línia d'ordres:
Falla SC YOUR_SERVICE_NAME reset = 0 actions = restart / 0 / restart / 0 / restart / 0
De totes maneres, la recuperació automàtica de vegades no funciona correctament i es recomana utilitzar programari de tercers. Sembla que quan el servei surt amb gràcia amb el codi de sortida de 0 windows, no intenteu recuperar-lo.