Как сделать автоматический запуск(перезапуск) службы windows по расписанию? С таким вопросом я столкнулся совсем недавно, участвуя в одном из проектов по своей работе. Решение оказалось достаточно простым.
Настройка автоматического запуска или перезапуска службы осуществляет в два простых шага:
- Шаг 1 — создать сценарий запуска/перезапуска службы.
- Шаг 2 — создать задачу и настроить расписание ее выполнения.
Создание сценария для службы
Сценарий запуска/перезапуска службы представляет собой обычный батник (bat-файл), который будет содержать команды:
1. Для запуска службы
net start [Имя службы] - запуск службы
2. Для перезапуска службы
net stop [Имя службы] - остановка службы net start [Имя службы] - запуск службы
Пример файла перезапуска службы windows
В качестве примера использована служба KMService.
Итак, создаем батник (bat-файл) с командами для перезапуска службы, который будет содержать две строки:
net stop KMService
net start KMService
Для обеспечения автоматического выполнения сценария перезапуска службы по расписанию: создается специальная задача, которая будет выполнять сценарий (запускать батничек).
Создание задачи в windows
Для создания задачи необходимо перейти в «Панель управления», кликнув в меню «Пуск» на пункт «Панель управления».
Далее, переходим в раздел «Администрирование».
В разделе «Администрирование» необходимо выбрать пункт «Планировщик заданий».
В окне «Планировщик заданий» кликаем правой кнопкой мыши на «Планировщик заданий» и выбираем пункт меню «Создать задачу».
В окне «Создание задачи» указываем Имя задачи, ставим галочку «Выполнить с наивысшими правами» и переходим на вкладку «Триггеры».
На вкладке «Триггеры» отображаются задаются условия запуска задачи. Для того чтобы создать расписание задачи перезапуска службы нажимаем на кнопку «Создать».
Заполняем параметры расписания задачи по перезапуску службы windows и нажимаем кнопку «Ок».
После создания расписания запуска задачи, необходимо указать наш сценарий(батничек), который должен выполнятся по расписанию. Для этого, переходим на вкладку «Действия» и нажимаем кнопку «Создать».
В окне «Создание действия» выбираем действие — «Запуск программы». После этого, нажимаем на кнопку «Обзор», ищем и выбираем наш файл со сценарием и нажимаем на кнопку «Ок».
И наконец, в окне «Создание задачи» нажимаем на кнопку «Ок».
Готово! Если все было сделано правильно, то задача будет выполняться по расписанию и будет перезапускать выбранную службу windows.
0 / 0 / 0 Регистрация: 04.04.2018 Сообщений: 11 |
|
1 |
|
04.04.2018, 07:02. Показов 41933. Ответов 14
Здравствуйте! Если есть профессионалы PowerShell помогите написать скрипт на перезапуск служб на сервере по субботам и воскресеньям каждые 15 мин.
__________________
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
04.04.2018, 12:06 |
2 |
написать скрипт на перезапуск служб на сервере по субботам и воскресеньям каждые 15 мин. Создаёте в планировщике Windows задание для выполнения powershell.exe с параметрами: Код -ExecutionPolicy Bypass -NonInteractive -NoProfile -NoLogo -Command "&{Stop-Service Spooler; Start-Service Spooler}" и настраиваете нужное расписание для повторных запусков.
0 |
0 / 0 / 0 Регистрация: 04.04.2018 Сообщений: 11 |
|
04.04.2018, 12:19 [ТС] |
3 |
Если вас не затруднит:
0 |
KDE777 1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||
04.04.2018, 12:26 |
4 |
|||
1.Покажите,пожалуйста,на скринах(Создаёте в планировщике Windows задание для выполнения powershell.exe с параметрами) Запуск PowerShell скриптов по расписанию Use the Windows Task Scheduler to Run a Windows PowerShell Script
2.Возможно ли все-таки средствами Powershell написать такой скрипт? Весь скрипт на Powershell выглядит так (перезапуск службы «Диспетчер печати»):
А вот для запуск по расписанию нужен планировщик.
0 |
0 / 0 / 0 Регистрация: 04.04.2018 Сообщений: 11 |
|
04.04.2018, 13:07 [ТС] |
5 |
Спасибо большое,буду пробывать. Вопросы появяться напишу Добавлено через 13 минут -ExecutionPolicy Bypass -NonInteractive -NoProfile -NoLogo -Command «&{Stop-Service Spooler; Start-Service Spooler
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
04.04.2018, 13:25 |
6 |
Код, который вы указали получается нужно вставить в самом планировщике во вкладку «действия» затем «создать» и тут в активную строку «программа или сценарий»? Действие это — запуск программы, имя программы powershell.exe, а код показанный в ответе #2 нужно прописать в поле «Добавить аргументы» (Add arguments)
Можете часть кода расшифровать,а именно ExecutionPolicy Bypass -NonInteractive -NoProfile -NoLogo -Command «& Это параметры для запуска powershell.exe, все они подробно описаны, если перейти по первой ссылке из моего предыдущего ответа.
0 |
0 / 0 / 0 Регистрация: 04.04.2018 Сообщений: 11 |
||
05.04.2018, 07:44 [ТС] |
7 |
|
Доброе утро! Добавлено через 45 минут В чем может быть причина? Вложения
0 |
KDE777 1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||
05.04.2018, 09:44 |
8 |
|||
Если у меня имеется 2 службы
или строчка с параметрами: Код -ExecutionPolicy Bypass -NonInteractive -NoProfile -NoLogo -Command "&{Stop-Service crypmail,crypoutmail; Start-Service crypmail,crypoutmail}" Добавлено через 1 минуту
В чем может быть причина? Покажите нормальный скриншот
0 |
0 / 0 / 0 Регистрация: 04.04.2018 Сообщений: 11 |
|
05.04.2018, 11:21 [ТС] |
9 |
Пожалуйста,распакуйте архив,там вордовкий файл со скринами.Напрямую с сервера не могу снять,т.к права ограничены
0 |
KDE777 |
05.04.2018, 11:54
|
Не по теме:
Пожалуйста,распакуйте архив,там вордовкий файл со скринами. Спасибо, но в таком виде пусть смотрит кто-нибудь другой
0 |
0 / 0 / 0 Регистрация: 04.04.2018 Сообщений: 11 |
|
05.04.2018, 16:47 [ТС] |
11 |
KDE777 Кликните здесь для просмотра всего текста
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
05.04.2018, 17:21 |
12 |
Вот скрины Ещё раз прочитайте мой ответ:
Действие это — запуск программы, имя программы powershell.exe, а код показанный в ответе #2 нужно прописать в поле «Добавить аргументы» (Add arguments) Никаких файлов start.ps1 я вам создавать не предлагал и тем более писать в Powershell-скрипте параметры для запуска powershell.exe!
0 |
0 / 0 / 0 Регистрация: 04.04.2018 Сообщений: 11 |
|
09.04.2018, 11:47 [ТС] |
13 |
KDE777: Подскажите, а можно это реализовать в виде скрипта на PowerShell? Т.е. нужен сам скрипт чтобы отрабатывал перезапуск служб по выходным.
0 |
Maks Модератор 6871 / 3818 / 477 Регистрация: 13.03.2013 Сообщений: 14,058 Записей в блоге: 9 |
||||
03.05.2018, 08:27 |
14 |
|||
Здравствуйте! Если есть профессионалы PowerShell помогите написать скрипт на перезапуск служб на сервере по субботам и воскресеньям каждые 15 мин. Есть алтернативное решение, например, написать батник
Далее, создать задание в планировщике с требуемыми триггерами (выходные, каждые 15 мин.) и указать путь к данному скрипту.
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
03.05.2018, 12:20 |
15 |
создать задание в планировщике с требуемыми триггерами (выходные, каждые 15 мин.) и указать путь к данному скрипту Именно это, и было сразу же предложено автору темы — запускать нужный скрипт из планировщика. Однако 1marcus, хочет получить реализацию функционала планировщика с помощью непосредственно скрипта
нужен сам скрипт чтобы отрабатывал перезапуск служб по выходным
0 |
Имеем Windows Server 2012 R2. Задача — автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.
Запускаем Планировщик заданий, создаём в нём папку «reboot»:
Делаем Create Basic Task… Запускается мастер:
Указываем Name, Description:
Кликаем Next:
Выбираем период Weekly. Next:
Указываем начало — ближайший понедельник 5 утра. Ставим галку Monday. Next:
Выбираем Start a program. Next:
В Program/script: пишем:
%SYSTEMROOT%System32shutdown.exe
В Add arguments (optional):
/r /f /t 90 /d p:0:0 /c "Перезапуск по понедельникам. Отмена: shutdown.exe /a"
Где:
- /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:
Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:
Сам пока не проверял результатов. В ближайший понедельник посмотрим…
P.S.
Две недели прошло — шедулер нормально перезагружает сервер по понедельникам.
- Remove From My Forums
Запуск службы с помощью планировщика.
-
Вопрос
-
Коллеги, добрый день. Пытаюсь создать задание в планировщике для запускаостановки необходимых служб по расписанию. Конечно можно сделать с помощью батника, но это не интересно:)
Создал задание, настроил запуск от пользователя «Администратор» и выполнять вне зависимости от регистрации пользователя.
Добавил действие. Запуск программы C:WindowsSystem32net.exe start «Name_services».
При запуске выдает last result 0x2.
На Windows Server 2012 такой шаблон запуска служб у меня работает. В чем может быть причина?
Ответы
-
Проблему решил. Помогло добавление пользователя в политику «Вход в качестве пакетного задания».
-
Предложено в качестве ответа
30 августа 2016 г. 10:41
-
Помечено в качестве ответа
Anton Sashev Ivanov
30 августа 2016 г. 10:53
-
Предложено в качестве ответа
Известно, что при функционировании рабочих процессов сервера 1С Предприятия 8.1 rphost.exe существует следующая проблема: из-за особенностей платформы, с подключением каждого нового клиента к рабочему процессу, увеличивается размер занимаемой рабочим процессом оперативной памяти. При этом, при отключении клиента, занимаемый при подключении объем не освобождается. Так же объем памяти, занимаемый рабочим процессом может увеличиваться при выполнении программного кода. Данное поведение называется “Утечками памяти” или “Memory Leaks”. В итоге, когда объем занимаемой памяти процессом rphost.exe вырастает больше опеределенного предела (в моем случае это было >1Gb), рабочий процесс безусловно перезапускается. Понятно, что клиенты, подключенные к этому процессу, получают сообщение, что соединение с сервером разорвано, прекращают работу и вынуждены переподключаться. В зависимости от количества пользователей и количества запущенных рабочих процессов, данная проблема возникает с той или иной частотой. В моем случае — пользователей порядка 60 и один рабочий процесс, подобная ситуация возникала до 5 раз в неделю. Т.е. ни о какой стабильной работе системы 1С Предприятие в этом случае речь не идет.
Первым шагом решения проблемы было — увеличить количество рабочих процессов, что и было сделано. Однако, проблему это решило лишь отчасти, перезапуски рабочих процессов стали происходить реже, но не исчезли совсем.
Второй и вполне логичный шаг — автоматический перезапуск процессов на сервере, о чем, собственно, и хочется написать.
Поскольку служба агента сервера 1С Предприятия представляет собой стандартную службу, в арсенале Windows есть стандартный способ остановки и запуска служб из командной строки командами net stop и net start. Достаточно эти команды лишь включить в bat-файл и настроить шедулер на запуск bat-файла по расписанию, я настроил перезапуск один раз в сутки, в ночное время. Следует иметь ввиду, что если перезапускать рабочие процессы в рабочее время, все подключенные к серверу 1С Предприятия клиенты будут отключены!
Кроме того, чтобы немного разнести по времени команды остановки и запуска службы, будем использовать известную утилиту sleep.exe, которую легко найти в Сети.
Примерный текст bat-файла restart1c.bat:
rem @echo off rem ----- начало скрипт остановки и запуска агента сервера 1С Предприятия---- set logfile="stopstartlog.txt" set timeout=20 echo %date% %time% >>%logfile% net stop "1C:Enterprise 8.1 Server Agent" >>%logfile% c:scriptssleep %timeout% echo %date% %time% >>%logfile% net start "1C:Enterprise 8.1 Server Agent" >>%logfile% c:scriptssleep %timeout% rem ----- конец скрипт остановки и запуска агента сервера 1С Предприятия----
Объяснение используемых переменных и команд:
* logfile — файл stopstartlog.txt, куда будут записываться результаты выполнения команд, размещается в том же каталоге, что и сам bat-файл;
** timeout — время в секундах;
*** c:scripts — каталог, где предполагается разместить программу sleep.exe, bat-файл и лог-файл;
Из этого же bat-файла можно сразу после перезапуска процессов запускать скрипт бэкапа средствами 1С Предприятия. В этом случае у вас гарантированно не будет подключен ни один клиент.
Необходимая ремарка: у пользователя, под которым будет выполняться задание по перезапуску службы должны быть соответствующие права на остановку и запуск служб сервера.
Источники:
- материалы форума www.mista.ru;
- Документация по платформе 1С Предприятие 8.1;
- Документация по продуктам MS Windows;
Windows, Windows 10, Windows 11, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP
- 19.10.2022
- 694
- 0
- 1
- 1
- 0
- Содержание статьи
- Настройка перезапуска службы Windows
- Добавить комментарий
Службами в Windows называют программы, которые работают в фоновом режиме, и обычно не требуют никакого взаимодействия с пользователем. Чаще всего, в роли служб выступают какие-то важные программы, которым необходимо быть постоянно запущенными. Однако, поскольку никто не застрахован от каких-либо ошибок в работе аппаратных или программных средств компьютера, такая программа может завершить свою работу в самый неподходящий момент. Чтобы избежать столь неприятного поворота событий, в настройках служб Windows предусмотрена возможность настройки перезапуска служб, в случае её непредвиденного завершения работы.
Настройка перезапуска службы Windows
- Открываем консоль управления службами, и находим нужную службу.
- Открываем свойства нужной службы, и переходим на вкладку «Восстановление».
- На данной вкладке можно настроить поведение службы при её непредвиденном завершении. При этом, есть возможность настроить различные действия для первого, второго и последующего завершения работы.
Для выбора доступны следующие действия:- Не выполнять никаких действий — в таком случае, ничего не будет делаться.
- Перезапуск службы — служба будет повторно запущена.
- Запуск программы — можно запустить программу или скрипт, например скрипт для отправки оповещения по электронной почте.
- Перезагрузка компьютера — как должно быть понятно из названия данного пункта, компьютер будет перезагружен.
Таким образом, для перезапуска службы в случае её завершения, достаточно выставить значение «Перезапуск службы» во всех трех пунктах.
- На главную
- Категории
- Прочее
- Автоматический перезапуск службы агента сервера 1С — скрипт + расписание
Добрый день. Поступила заявка от 1С-ников, что необходимо ночью перезапускать службу агента сервера 1С на 8-ке. Как многим известно, что данную службу просто так нельзя «перезапустить», иначе зависшие сессии так и остаются «висеть», ее необходимо сначала остановить, а после снова запустить. Порывшись немного в интернете, пересмотрев кучу скриптов — собрал из многообразия один, не большой, полностью рабочий, уже оттестировал его на серверах, теперь выкладываю на ваше обозрение и пользование.
2017-10-12 09:53:53215
Скрипт перезапуска службы агента сервера 1С
В данном разделе я приведу скрипт .bat, который у меня получился, а так же дам краткое описание того, что за что отвечает в моем случае.
Собственно сам скрипт:
@echo off
set logfile="C:!Distrscriptstopstartlog.txt" echo %date% %time% >>%logfile%
net stop "1C:Enterprise 8.3 Server Agent (1640)" >>%logfile%
ping -n 16 localhost>Nul echo %date% %time% >>%logfile%
net start "1C:Enterprise 8.3 Server Agent (1640)" >>%logfile%
ping -n 301 localhost>Nul SetLocal EnableExtensions
Set ProcessName=1C:Enterprise 8.3 Server Agent (1640)
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%" If %ErrorLevel% NEQ 0 net start "1C:Enterprise 8.3 Server Agent (1640)"
exit
Давайте рассмотрим его подробнее:
- Первым делом отключаем уведомления о выполнении, пусть это все работает в фоновом режиме
- Далее указываем где будет хранится наш лог-файл, куда будет писаться дата и время запуска и остановки службы (можно не писать лог, но на всякий случай пусть будет)
- Пишем в Лог дату и время начала остановки
- Останавливаем службу агента сервера, в моем случае она называется так — 1C:Enterprise 8.3 Server Agent (1640) и пишем ее статус в лог файл (ниже приведу пример что в логе появляется)
- Далее делаем задержку в 15 секунд, чтобы дождаться, пока служба останавливается (пинг равен примерно 1 секунде, первый проходит моментально, поэтому делаем время в секундах +1)
- Опять записываем в лог дату в время
- Запускаем службу обратно
- Делаем задержку в 5 минут, если служба не остановилась за 15 секунд, то она не запустится естественно, что то видимо зависло сильно и будем ждать 5 минут.
- Далее проверяем, запустилась ли служба и работает ли она? Если не работает, то выполняем ее повторный старт.
- Завершаем работу с cmd.
Все, вот такой вот получился скрипт. Я не программист, поэтому может он не совсем верный с точки зрения выполнения сценариев и программного кода, но для меня важно, чтобы это работало — а это работает! Данный скрипт у меня выполняется каждый день, каждый час с 00:00 до 7:00, но об этом позже.
Пример лог файла:
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 часов.
Далее идем во вкладку Действия и создаем действие на выполнения скрипта.
Все, на этом все готово. Как можем увидеть в журнале, задача с такими параметрами успешно выполняется и ровно то время, которое у нас задано в скрипте:
Заключение
Вот так не очень сложно создается скрипт на перезапуск службы агента сервера 1С и настраивается его расписание. Я думаю что многие итак знают как сделать одно или второе, но я думаю что кому то это пригодится. Если у Вас возникнут проблемы или вопросы — задавайте их в комментариях, постараюсь помочь чем смогу. Если будут какие-то дополнения или предложения — с удовольствием тоже выслушаю.
Так же можно почитать про скрипт — удаление файлов старше n дней
Ваш покорный слуга — компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.