Перезапуск службы по расписанию windows server

Обновлено: 30.06.2024

У меня есть служба Windows, которая неожиданно выходит каждые несколько дней. Есть ли простой способ следить за тем, чтобы он быстро перезагружался в случае сбоя?

Под приложением Службы выберите свойства рассматриваемой службы.

Посмотрите вкладку восстановления - есть все виды опций - я бы установил First & Second Failure для перезапуска службы, Third для запуска пакетной программы, которая BLAT отправляет электронное письмо с третьим уведомлением об ошибке .

Вы также должны установить Reset Fail Count на 1, чтобы ежедневно сбрасывать счетчик ошибок.

РЕДАКТИРОВАТЬ:

Похоже, вы можете сделать это через командную строку:

Ваш файл MyBatchFile.CMD может выглядеть так:

Все хорошо, но +1, особенно за советы по электронной почте и командную строку. В любом месте. С SC failure w3svc command= "MyBatchFile.cmd" ним должен быть путь или C: \ Windows \ System32. Вы можете поместить его в любой каталог, если используете полный путь, т. Е. SC failure w3svc command= "c:\Stuff\MyBatchFile.cmd"

Откройте Services.msc, дважды щелкните сервис, чтобы открыть Свойства сервиса, есть вкладка Восстановление, и эти настройки должны позволить вам перезапустить сервис в случае сбоя.

Попробуйте установить время восстановления на ноль:

введите описание изображения здесь

Эквивалент командной строки:

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

В любом случае, автоматическое восстановление не работает должным образом, поэтому рекомендуется использовать стороннее программное обеспечение. Кажется, что когда сервис завершает работу изящно с кодом завершения 0 окон, не пытается его восстановить.

Я использую ServiceKeeper на моем сервере Windows 2008 на HostForLife.eu, и он работает очень хорошо. Ранее у меня был обзор ServiceHawk, но я предпочитаю использовать ServiceKeeper для более простого управления и интерфейса.

У меня было аналогичное требование, чтобы запустить службу, если она остановлена. Я подумал, что самое простое решение - выполнять указанную ниже команду в планировщике задач Windows каждые 5 минут:

net start MyServiceName

Эта команда в основном запускает службу (если она остановлена) и не имеет никакого эффекта, если служба уже запущена.

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

После нескольких попыток (и несмотря на все другие вещи, которые я видел), конфигурация полей на вкладке восстановления в сервисах выглядит следующим образом:

Программа: Powershell.exe
** Не C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe

** $ args - это параметры, которые будут переданы в ваш скрипт. Это не обязательно.

Как сделать автоматический запуск(перезапуск) службы windows по расписанию? С таким вопросом я столкнулся совсем недавно, участвуя в одном из проектов по своей работе. Решение оказалось достаточно простым.

Службы windows

Настройка автоматического запуска или перезапуска службы осуществляет в два простых шага:

Создание сценария для службы

Сценарий запуска/перезапуска службы представляет собой обычный батник (bat-файл), который будет содержать команды:

1. Для запуска службы

2. Для перезапуска службы

Пример файла перезапуска службы windows

В качестве примера использована служба KMService.

Итак, создаем батник (bat-файл) с командами для перезапуска службы, который будет содержать две строки:

Для обеспечения автоматического выполнения сценария перезапуска службы по расписанию: создается специальная задача, которая будет выполнять сценарий (запускать батничек).

Создание задачи в windows

Пуск. Панель управления

Раздел администрирование

Планировщик заданий

Запуск служб windows по расписанию

Запуск служб windows по расписанию

Запуск служб windows по расписанию

Запуск служб windows по расписанию

Запуск служб windows по расписанию

Запуск служб windows по расписанию

Готово! Если все было сделано правильно, то задача будет выполняться по расписанию и будет перезапускать выбранную службу windows.

Имеем Windows Server 2012 R2. Задача - автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.

Запускаем Планировщик заданий, создаём в нём папку "reboot":

reboot

Делаем Create Basic Task. Запускается мастер:

reboot

Указываем Name, Description:

reboot

reboot

Выбираем период Weekly. Next:

reboot

Указываем начало - ближайший понедельник 5 утра. Ставим галку Monday. Next:

reboot

Выбираем Start a program. Next:

reboot

В Program/script: пишем:

В Add arguments (optional):

  • /r - перезагрузка,
  • /f - принудительное закрытие всех приложений,
  • /t 90 - время ожидания до начала перезагрузки 90 сек,
  • /d p:0:0 - причины перезагрузки для журнала. В данном случае, мы указали: p - запланированная перезагрузка, 0:0 - "Other (planned)",
  • /c комментарий в свободной форме длинной не более 512 символов. Комментарий будет показываться юзерам 90 секунд. За это время можно отменить перезагрузку командой shutdown.exe /a.

Список параметров и причин перезагрузки можно посмотреть shutdown.exe /?

reboot

Мастер не доделали, кликаем Finish. Создаётся задача - редактируем её.

win

Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:

reboot

Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:

win

Сам пока не проверял результатов. В ближайший понедельник посмотрим.

Две недели прошло - шедулер нормально перезагружает сервер по понедельникам.

Скрипт перезапуска службы агента сервера 1С


В данном разделе я приведу скрипт .bat, который у меня получился, а так же дам краткое описание того, что за что отвечает в моем случае.

Собственно сам скрипт:

  1. Первым делом отключаем уведомления о выполнении, пусть это все работает в фоновом режиме
  2. Далее указываем где будет хранится наш лог-файл, куда будет писаться дата и время запуска и остановки службы (можно не писать лог, но на всякий случай пусть будет)
  3. Пишем в Лог дату и время начала остановки
  4. Останавливаем службу агента сервера, в моем случае она называется так - 1C:Enterprise 8.3 Server Agent (1640) и пишем ее статус в лог файл (ниже приведу пример что в логе появляется)
  5. Далее делаем задержку в 15 секунд, чтобы дождаться, пока служба останавливается (пинг равен примерно 1 секунде, первый проходит моментально, поэтому делаем время в секундах +1)
  6. Опять записываем в лог дату в время
  7. Запускаем службу обратно
  8. Делаем задержку в 5 минут, если служба не остановилась за 15 секунд, то она не запустится естественно, что то видимо зависло сильно и будем ждать 5 минут.
  9. Далее проверяем, запустилась ли служба и работает ли она? Если не работает, то выполняем ее повторный старт.
  10. Завершаем работу с cmd.

Пример лог файла:

12.10.2017 0:00:00,10
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" останавливается.
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" успешно остановлена.
12.10.2017 0:00:15,33
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" запускается.
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" успешно запущена.
12.10.2017 1:00:00,15
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" останавливается.
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" успешно остановлена.
12.10.2017 1:00:15,37
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" запускается.
Служба "Агент сервера 1С:Предприятия 8.3 (1640)" успешно запущена.

Настройка выполнения *.bat по расписанию


Как я уже говорил выше, выполнение скрипта у меня происходит автоматически, каждый день он запускается ежечасно с 00:00 до 7:00. Сейчас я расскажу, как это сделано у меня.

Для начала идем в "Пуск -> панель управления -> Администрирование" и запускаем там "Планировщик заданий".


Выбираем пункт "Создать задачу":


На вкладке "Общие" задаем имя задания, его описание и пользователя, от которого оно будет выполняться. По умолчанию там будет пользователь, под которым вы вошли в данный момент в систему.

Далее идем в закладку Триггеры и настраиваем, когда нам надо запускать задачу. В моем случае это ежедневно выполнять в 00:00 и повторять ее каждый час в течении 7 часов.


Далее идем во вкладку Действия и создаем действие на выполнения скрипта.


Все, на этом все готово. Как можем увидеть в журнале, задача с такими параметрами успешно выполняется и ровно то время, которое у нас задано в скрипте:

Читайте также: