Висящие процессы 1С. Решаем через PowerShell

Проблема заключалась в процессах 1С (1cv8.exe), которые после запуска планировщиком оставались висеть в памяти. Приводило это, как можете догадаться, к заполнению памяти.

Основная задача — получение PID, для завершения процесса. Я решил не связываться с начинкой 1С а работать «поверх» этой системы.

Мое решение — Скрипт запускает сессию powershell, которая запускает 1С, получая PID, передает нужные параметры (для запуска процесса «отключения», завершает 1С по таймауту или по окончанию работы 1С.

Для работы всего комплекса нужен powershell (желательно версии не ниже 2), .NET 3.5 для работы exe файла (его исходники можно найти на гитхабе, если вы хотите сами его скомпилировать). Вероятно не самое изящное исполнение, да и на момент написания статьи хотелось бы что-то поменять при наличии подходящего времени.

Итак, как все это настроить:

  1. Создаем папку на сервере. В ней будет работать все наше добро. На папку должны быть полные права у пользователя, от которого будет запускаться скрипт
  2. Внутри папки нам нужен сам скрипт, папка changer с exe файлом, папка update для нужд скрипта (там же будет общий лог)
  3. Добавляем вот такой кусок кода в вашу выгрузку/обработку

4. Редактируем шапку скрипта:

Запускаем powershell.exe с указанием скрипта в параметрах и радуемся. Все буковки хранятся на github, если заинтересовало.

 

| Страничка на github |