6

У меня есть служба Windows, работающая на сервере Windows 2003. Под опцией свойств, когда вы щелкаете правой кнопкой мыши службу, есть возможность перезапустить службу в случае сбоя. Доступные опции для первого, второго и любых последующих сбоев.

Я попытался использовать эту опцию для перезапуска службы, когда она не запущена, но похоже, что она перезапускает службу только в случае сбоя службы в результате сбоя. Проблема, с которой я столкнулся, заключается в том, что в случае сбоя служба поднимает его и корректно завершает работу. Это означает, что он не перезапускается.

Есть ли способ, которым я могу перезапустить сервис, независимо от того, остановился ли он из-за сбоя или остановился изящно?

Спасибо

3 ответа3

9

Для такого плохого сервиса я бы создал небольшой скрипт, который проверяет, работает ли он, и запускает его, если нет. Затем я использовал запланированные задания для запуска скрипта каждые 5 минут или около того.

Пример сценария (проверяет службу спулера):

@echo off
Rem Look for the Print Spooler service in the list of started services
net start | find /i "Print Spooler"
Rem if not found, start it and a restart occurred.
if "%errorlevel%"=="1" (
   echo Service "Print Spooler" restarted at %time% on %date% by Script %0>>c:\ServiceRestart.Log
   net start "Print Spooler"
)
1

Что это за услуга? Однажды у меня возникла странная проблема со службой MS Fax. Я решил эту проблему, проверив процессы в диспетчере задач, завершив процесс, если он указан в списке, затем открыв командную строку и введя:

net start faxsvc.exe

Вы также можете использовать net stop faxsvc.exe для прекращения работы сервиса.

Другое дело - проверить зависимости и перезапустить их, то есть те, от которых зависит факс.

РЕДАКТИРОВАТЬ: Я догадался, что это может помочь, но я не очень хорошо прочитал ваш вопрос. Я знаю, что есть программа под названием Service Hawk, но она стоит денег. Другая идея заключается в сопоставлении командного файла, который будет перезапускать службу каждые XX секунд / минут / часов / независимо от того, сколько времени длится между запуском и отказом службы.

0

Вот ответ!

С помощью следующей команды Powershell можно проверить и запустить необходимую службу

$A = get-service AdobeARMservice 
if ($A.Status -eq "Stopped") {$A.start()} elseIf ($A.status -eq "Running") {Write-Host -ForegroundColor Yellow $A.name "is running"}   

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .