Перезапуск службы по расписанию windows server
У меня есть служба 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 по расписанию? С таким вопросом я столкнулся совсем недавно, участвуя в одном из проектов по своей работе. Решение оказалось достаточно простым.
Настройка автоматического запуска или перезапуска службы осуществляет в два простых шага:
Создание сценария для службы
Сценарий запуска/перезапуска службы представляет собой обычный батник (bat-файл), который будет содержать команды:
1. Для запуска службы
2. Для перезапуска службы
Пример файла перезапуска службы windows
В качестве примера использована служба KMService.
Итак, создаем батник (bat-файл) с командами для перезапуска службы, который будет содержать две строки:
Для обеспечения автоматического выполнения сценария перезапуска службы по расписанию: создается специальная задача, которая будет выполнять сценарий (запускать батничек).
Создание задачи в windows
Готово! Если все было сделано правильно, то задача будет выполняться по расписанию и будет перезапускать выбранную службу windows.
Имеем Windows Server 2012 R2. Задача - автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.
Запускаем Планировщик заданий, создаём в нём папку "reboot":
Делаем Create Basic Task. Запускается мастер:
Указываем Name, Description:
Выбираем период Weekly. Next:
Указываем начало - ближайший понедельник 5 утра. Ставим галку Monday. Next:
Выбираем Start a program. Next:
В 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 /?
Мастер не доделали, кликаем Finish. Создаётся задача - редактируем её.
Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:
Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:
Сам пока не проверял результатов. В ближайший понедельник посмотрим.
Две недели прошло - шедулер нормально перезагружает сервер по понедельникам.
Скрипт перезапуска службы агента сервера 1С
В данном разделе я приведу скрипт .bat, который у меня получился, а так же дам краткое описание того, что за что отвечает в моем случае.
Собственно сам скрипт:
- Первым делом отключаем уведомления о выполнении, пусть это все работает в фоновом режиме
- Далее указываем где будет хранится наш лог-файл, куда будет писаться дата и время запуска и остановки службы (можно не писать лог, но на всякий случай пусть будет)
- Пишем в Лог дату и время начала остановки
- Останавливаем службу агента сервера, в моем случае она называется так - 1C:Enterprise 8.3 Server Agent (1640) и пишем ее статус в лог файл (ниже приведу пример что в логе появляется)
- Далее делаем задержку в 15 секунд, чтобы дождаться, пока служба останавливается (пинг равен примерно 1 секунде, первый проходит моментально, поэтому делаем время в секундах +1)
- Опять записываем в лог дату в время
- Запускаем службу обратно
- Делаем задержку в 5 минут, если служба не остановилась за 15 секунд, то она не запустится естественно, что то видимо зависло сильно и будем ждать 5 минут.
- Далее проверяем, запустилась ли служба и работает ли она? Если не работает, то выполняем ее повторный старт.
- Завершаем работу с 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 часов.
Далее идем во вкладку Действия и создаем действие на выполнения скрипта.
Все, на этом все готово. Как можем увидеть в журнале, задача с такими параметрами успешно выполняется и ровно то время, которое у нас задано в скрипте:
Читайте также: