Автоматический перезапуск службы агента сервера 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 Давайте рассмотрим его подробнее:
- Первым делом отключаем уведомления о выполнении, пусть это все работает в фоновом режиме
- Далее указываем где будет хранится наш лог-файл, куда будет писаться дата и время запуска и остановки службы (можно не писать лог, но на всякий случай пусть будет)
- Пишем в Лог дату и время начала остановки
- Останавливаем службу агента сервера, в моем случае она называется так - 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 дней