Рестарт службы windows по расписанию

Энциклопедия Windows

Все об использовании и настройке Windows

  • Windata
  • »
  • Windows XP
  • »
  • FAQ [XP]
  • » Настройка автоматического перезапуска службы

Настройка автоматического перезапуска службы

В Windows значительно усовершенствованы функции восстановления служб. Откройте оснастку Управление компьютером (Computer Management), выберите команду Службы и программы > Службы (Serices and Applications > Services) и перейдите на вкладке Восстановление (Recovery), где для каждой службы представлен набор соответствующих действий.

· Ничего не делать (Take no action);

· Перезапуск службы (Restart the service);

· Выполнение программы (Run a user-defined file);

· Перезагрузка компьютера (Reboot a machine).

Для решения этой задачи также можно создать собственный сценарий, выполняемый непрерывно, с помощью командного файла. Например, в следующем сценарии используются программы SC.EXE и SLEEP.EXE из пакета Resource Kit:

:start
sc query spooler > state.txt
find «STOPPED» state.txt
if %errorlevel% EQU 0 goto error
sleep 300
goto start

:error
sc start spooler
sleep 5
goto start

Существует возможность добавить имя сервера (например, \\server query и т.д.), если необходимо контролировать работу удаленного компьютера. Проверка выполняется каждые пять минут, однако, интервал можно изменить, равно как проверять сразу несколько служб.

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

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

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

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

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

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

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

Ваш файл 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 server что такое рабочая группа

Перезагрузка 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:

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

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

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

Перезапуск служб на сервере по субботам и воскресеньям каждые 15 минут

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

Вычислить стоимость переговоров, если по субботам и воскресеньям предоставляется 20% скидка
Написать программу вычисления стоимости переговоров, если по суббо- там и воскресеньям.

Определить стоимость разговора по телефону с учетом скидки 20%, представляемой по субботам и воскресеньям
Написать программу определения стоимости разговора по телефону с учетом скидки 20%, представляемой.

Создаёте в планировщике Windows задание для выполнения powershell.exe с параметрами:

Весь скрипт на Powershell выглядит так (перезапуск службы «Диспетчер печати»):

Спасибо большое,буду пробывать. Вопросы появяться напишу

Добавлено через 13 минут
Код, который вы указали(Код

-ExecutionPolicy Bypass -NonInteractive -NoProfile -NoLogo -Command «& )
получается нужно вставить в самом планировщике во вкладку «действия» затем «создать» и тут в активную строку «программа или сценарий»?
Можете часть кода расшифровать,а именно ExecutionPolicy Bypass -NonInteractive -NoProfile -NoLogo -Command «&

Действие это — запуск программы, имя программы powershell.exe, а код показанный в ответе #2 нужно прописать в поле «Добавить аргументы» (Add arguments)

Доброе утро!
Спасибо, огромное, за ответы.
Если у меня имеется 2 службы то код будет выглядеть так? ExecutionPolicy Bypass -NonInteractive -NoProfile -NoLogo -Command «&«

Добавлено через 45 минут
Похоже, не работает

В чем может быть причина?

Вложения

1.rar (243.4 Кб, 4 просмотров)

или строчка с параметрами:

Ещё раз прочитайте мой ответ:

Тематические курсы и обучение профессиям онлайн
Профессия Cпециалист по кибербезопасности (Skillbox)
DevOps-инженер (Нетология)
Профессия DevOps-инженер PRO (Skillbox)

Именно это, и было сразу же предложено автору темы — запускать нужный скрипт из планировщика. Однако 1marcus, хочет получить реализацию функционала планировщика с помощью непосредственно скрипта

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как сделать чтобы заявка, созданная по субботам или воскресеньям, создавалась только в понедельник
как сделать что бы заявка созданная по субботам или воскресеньям создавалась тока в понедельник ? я.

Перезапуск служб
Добрый день у меня вопрос следующего характера. Не подскажите как в c# можно реализовать.

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

Читайте также:  Windows dns для linux

Реконнект VPN и перезапуск служб в C# и CMD
Приветствую всех! Столкнулся с, необъяснимой для меня, проблемой, может кто-нибудь сможет.

Управляем службами Windows с помощью PowerShell. Часть 2


Продолжаем знакомиться с тем, как осуществлять управление службами Windows с использованием PowerShell. В предыдущем посте мы рассмотрели, как получить статус службы на локальном и удаленном компьютере, произвести фильтрацию служб (например, найти только остановленные службы) и определить зависимые службы. В этом посте будут рассмотрены такие достаточно тривиальные вещи, как:

  1. Остановка службы
  2. Запуск службы
  3. Перезапуск службы
  4. Приостановка и возобновление работы
  5. Управление удаленными службами
  6. Настраиваем автозагрузку службы

Мы уделим большее внимание разбору команд в PowerShell для осуществления выше перечисленного на локальном компьютере. В разделе “управление службами удаленных компьютерах” мы рассмотрим, ограничения работы в PowerShell v2 и v3. Подробности под катом.

Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.

Взглянем на эти команды внимательнее.

STOP-SERVICE

Чтобы остановить службу, мы должны уточнить ее имя.

Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.

Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).

Параметр –WhatIf был добавлен для того, чтобы мы посмотрели, что будет, если командлет будет запущен. Когда я удостоверюсь, что это именно та служба, которая меня интересует, я просто удалю -Whatif и остановлю службу.

Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:

Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.

Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.

В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.

START-SERVICE

Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.

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

Причиной тому в большинстве случаев является выключенные службы. Как конфигурировать настройки службы, я расскажу в следующей статье.
Если вы хотите запустить службы и все службы, зависимые от нее, используйте следующее выражение:

Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.

RESTART-SERVICE

Вы удивитесь, но перезапуск службы работает также как два предыдущих примера. Используйте –Passthru, если хотите убедиться, что служба запущена.

Так как мы осуществляем остановку службы, нам может понадобиться параметр –Force.

ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ

Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)

В чем же проблема? Смотрим на объект (используя Get-Service).

Читайте также:  Windows 10 autologon disable

Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:

Как мы видим, не так много служб удовлетворяют этому требованию.

Готовы возобновить работу службы? Используйте следующее выражение:

Оба командлета также поддерживают –Whatif.

УДАЛЕННЫЕ СЛУЖБЫ

Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.

Управление службами на удаленных компьютерах не ограничивается вышеперечисленным, но это уже будет предмет рассмотрения последующих статей.
Все эти командлеты могут быть использованы в конвейерном выражении и зачастую это лучший вариант. Использование Get-Service для получения объектов и последующая передача их в подходящий командлет.

УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС

Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.

Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.

Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.

К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:

Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.

УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ

Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).

Однако, просто взглянув на объект, мы не сможем сказать, к какому типу автозагрузки он относится.

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

Так что если вы хотите выключить и остановить (или включить и запустить) службу, передайте объект в подходящий командлет.

Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.

Оцените статью