gifts2017

Запуск 1С 8.* от имени службы с мониторингом состояния и перезапуском

Опубликовал Дмитрий Мамулькин (dumsik) в раздел Администрирование - Сервисные утилиты

Использование srvany.exe и скрипта на wsh для запуска 1с 8 в качестве службы и ее мониторинга.

Введение

Несмотря на то, что в 1с 8 есть прекрасный механизм регламентных заданий, полностью автоматически он работает только в клиент-серверном варианте, а в файловом варианте 8.2 нужно запускать отдельный сеанс для работы регламентых заданий. Также иногда возникает необходимость запустить какую-то  обработку в режиме 1с Предприятия в автоматическом режиме (Пример такой обработки система Моби-С которая свой сервер реализует в  виде com-обьекта запущенного из обработки). Лучшим вариантом запуска в случаях как мне кажется, является запуск 1С от имени службы.  Думаю, плюсы такого решения всем понятны. Стандартный механизм запуска 1С как службы через использование утилиты srvany.exe обладает следующими недостатками:
-если 1с не запустилась при старте службы то уже и не запустится,
- нельзя периодически запускать 1с,
-если 1с зависла srvany.exe ничего не предпримет для перезапуска 1С Предприятия
 
Решение
Для  решения всех перечисленных проблем был написан скрип на vbscript который берет на себя всю работу по запуску и контролю за работой запущенного экземпляра 1С. Сам метод запуска службы не изменился это все тот-же srvany.exe только теперь он запускает не 1С, а скрипт который уже занимается запуском 1с исходя из своих настроек указанных в специальном файле.
Что может данный скрипт:
1. Запускать и перезапускать 1с с указанным в настройках скрипта интервалом.
2. Мониторить запущенный скриптом экземпляр 1С. Опрашивая через WMI раз в минуту значение счетчиков производительности Windows для процесса с PID запущенного экземпляра 1C и в случае если в течении пяти минут замеры производительности не изменились принимается решение что экземпляр 1C зависал запущенный процесс 1С убивается. В случае если положиться на счетчики производительности нельзя, можно настроить мониторинг даты/времени изменения спец.файла pulse.txt и также если он не изменялся (дополнительно к счетчикам производительности) то процесс 1С будет убит.  Конечно  дату/время изменения спец.файла pulse.txt запущенная копия 1С должна обновлять сам периодически иначе толку от такой проверки не будет.
3. Мониторить в определенном в настройках скрипта месте наличие файла fclose и если он найден то завершать работу запущенного экземпляра 1С.
4.  Мониторить в определенном в настройках скрипта месте наличие файла fkill и если он найден то завершать работу запущенного экземпляра 1С и больше не запускать 1С пока файл fkill не будет удален. Отличие от файла fclose в том, что файл fclose удаляется после завершения процесса 1С  т.е. с помощью него можно принудительно перезапустить процесс 1С
5. Мониторить в определенном в настройках скрипта месте наличие файла fstop и если он найден  больше не запускать 1С пока файл fstop не будет удален.
6. В случае если 1с будет зависать при трех последовательных запусках, скрипт может отправить сообщение на почту системного администратора или программиста.


 Установка службы

 1. Папку из архива поместить в корень диска. (Работу с папками в пути к которым есть пробелы не проверял, поэтому по возможности не используйте папки с пробелами)
2.  Под администратором запустить командный сценарий InstallSrv.cmd, который установит службу в системе
3.  Зайти в Administrative Tools->Component Services раздел DCOM Config найти объект  Microsoft WBEM Unsecured Apartment отрыть ее свойства и на вкладке Security дать право для типа входа СЛУЖБА на Local Launch и Local Activation. Это очень важно т.к. без этой настройки скрипт не сможет мониторить корректное завершение процесса 1С.
4. Отредактировать настройки скрипта в файле SrvConfig.ini.
5. Если  необходимо изменить интервал перезапуска 1С. Для этого отредактируйте строку Const RestartPauseSec = 60 в файле скрипта 1C_srv.vbs
6. Заполнить в файле Operators.ini данные для отправки уведомлений о зависании 1С по электронной почте.
Все служба готова к работе.
Можно добавлять неограниченное количество служб в систему главное, чтобы они были в разных папках и в случае если у Вас Windows 32-х битная, то разные службы должны запускаться от разных пользователей Windows.
Все необходимые для работы файлы в архиве. Спасибо за внимание.

 

Небольшое обновление. В первой версии скрипта была допущена ошибка, приводящая к тому, что 1С больше не запускалась в случае неудачной попытки запуска процесса 1С.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
1C_Service_v2.rar
.rar 32,72Kb
16.10.14
19
.rar 32,72Kb 19 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Владимир Чаклин (vec435) 15.10.14 12:19
как вариант - запуск 1С из ярлыка с параметром /Execute в который передаешь полный путь к обработке
2. Дмитрий Мамулькин (dumsik) 16.10.14 03:34
(1) vec435, это конечно хорошо но проблему с перезапуском 1с в случае зависания это никак не решит. Да и запустить ярлык часто просто некому (допустим комп ночью перезагрузился и т.д.). Помещение ярлыка в автозагрузку не предлагать :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа