Назад | Перейти на главную страницу

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

Компания, в которой я работаю, имеет сервер, который контролирует внешнюю камеру / систему наблюдения. Следующий процесс продолжает умирать: PureActiv Video Processor.

Моя команда должна постоянно перезапускать службу вручную, используя Управление компьютером.

Может ли кто-нибудь предоставить мне сценарий, который проверит службу и перезапустит службу, если она не запущена.

Ниже представлена ​​необходимая информация:

Система: Windows Server 2003 Service Edition с пакетом обновления 2 (сборка 3790) Служба: PureActiv Video Processor Расположение службы: "C: \ Program Files \ PureTech Systems \ PureActivDAQServices \ Pure.PureLink.VideoProcessor.VideoProcessorService.exe"

Спасибо, -jm

Если служба запускается и завершается неправильно, вам не нужен сценарий для этого.

  1. Откройте панель управления службами
  2. Щелкните правой кнопкой мыши службу и получите свойства
  3. Перейдите на вкладку Recovery и отредактируйте там настройки.

РЕДАКТИРОВАТЬ:
Да, и, как все добавили, вам непременно стоит проверить, что происходит со службой. Traveling Tech Guy хорошо подмечает утечки памяти.

Я бы также проверил средство просмотра событий, чтобы узнать, почему служба дает сбой - это может быть незначительное исправление или обновление драйвера навсегда решит проблему.

Еще один момент: если процесс пропускает память и оставляет выделенную память после сбоя, перезапуск его снова и снова снижает стабильность ОС и увеличивает вероятность того, что вся ваша система исчерпает ресурсы раньше.

Короче, рекомендую разобраться с проблемой, а не лейкопластырем :)

Посмотрите, можете ли вы или кто-то из ваших делегатов периодически запускать Sysinternals Process Explorer на компьютере и сервисе, на который он влияет, после того, как он работал в течение дня.

В разделе services.msc найдите свойства службы; там должно быть указано имя исполняемого файла. Это то, что вы будете отслеживать в Process Explorer. В PE щелкните правой кнопкой мыши имя исполняемого файла и получите его свойства. Обратите внимание на использование памяти.

После сбоя службы не перезапускайте ее сразу. Запустите PE и запустите службу. Получите его свойства и обратите внимание на использование памяти после того, как он проработает несколько минут.

Вы можете обратиться к поставщику с ошибкой в ​​драйвере.

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

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

strComputer = "." 
strSvcName = "PureActiv Video Processor" 
set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
set objService = objWMI.Get("Win32_Service.Name='" & strSvcName & "'")
If objService.State= "Stopped" Then
    objService.StartService()
End If


Этот вопрос уже задавался, см. Как я могу автоматически перезапустить службу Windows в случае ее сбоя?

Надеюсь это поможет.

Это работа для более общего инструмента работоспособности и мониторинга системы, такого как ActivExperts Network Monitor или что-то более дорогое (Operations Manager) или более открытый исходный код (Nagios) и др. ^^

@Oskar повторно отслеживает даже один сервер - вы даже можете использовать что-то вроде Service Hawk, который отслеживает службы Windows, без необходимости использовать такой большой пакет мониторинга.