Автоматический перезапуск службы агента сервера 1С - скрипт + расписание

Добрый день. Поступила заявка от 1С-ников, что необходимо ночью перезапускать службу агента сервера 1С на 8-ке. Как многим известно, что данную службу просто так нельзя "перезапустить", иначе зависшие сессии так и остаются "висеть", ее необходимо сначала остановить, а после снова запустить. Порывшись немного в интернете, пересмотрев кучу скриптов - собрал из многообразия один, не большой, полностью рабочий, уже оттестировал его на серверах, теперь выкладываю на ваше обозрение и пользование.

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

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

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

@echo off set logfile="C:\!Distr\script\stopstartlog.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 Давайте рассмотрим его подробнее:

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

Категории