Запуск процесса с ожиданием завершения дочерних первого уровня

Запускает указанный процесс с параметрами и ожидает завершения его и дочерних процессов 1 уровня.
Можно указать произвольный таймаут, по истечении которого ожидание прерывается.
Также можно заставить скрипт принудительно завершить родительский и дочерние процессы, которые не завершились сами к моменту наступления таймаута.

Скрипт пришлось родить для запуска баз по именам с помощью стартера платформы 1С 8.3.

Известная проблема состоит в том, что стартер (1cestart.exe) завершается раньше запущенного им дочернего процесса, что делает использование команды Start бессмысленым. Данный скрипт опрашивает список процессов по идентификатору родительского процесса PID средствами WMI с указанным интервалом, и завершается, когда ссылок на PID не остается.

Теперь можно забыть о прописывании версий и прочих индивидуальных настроек баз в скрипты, а указывать только файл списка баз (или сослаться на него из 1cv82common1CESCmn.cfg) и имя базы — все остальное стартер найдет в списке баз.

Область применения — пакетный запуск конфигуратора (тестирование, архивация, выгрузка/загрузка исходников для трехстороннего сравнения и прочей обработки).

 Разумеется, применение этого скрипта не ограничивается запуском 1С, единственное ограничение — дочерние процессы 2 и следующих уровней не просматриваюся. Допилить на этот случай не сложно, но это приведет к дополнительным запросам к WMI (количество уровней вложенности дерева процессов + 1), что приведет к дополнительным расходам ресурсов и повышению вероятности взятия в оборот недочерних процессов с совпадающими идентификаторами.

Запуск нужно производить при помощи «cscript //nologo …», чтобы избежать появления диалоговых окон.


Версия 1.0.4, 2026-06-02.

Добавлен контроль времени создания дочерних процессов.
Вероятность попадания процессов с идентичным PID родителя в список ожидания завершения сведена почти к нулю (почти — потому что в некоторых случаях не удается точно определить время запуска и/или завершения корневого процесса).

11 Comments

  1. kuzyara

    может пригодится кому http://amatashkin.com/2012/03/16/backup-1c-database-on-schedule/

    Reply ↓
  2. GreenDragon

    (1) kuzyara, ога! Сам по тому скрипту настраивал архивирование, дополнив его сбросом сделанного архива на ftp(бухгалтеры просили для аудиторов такое устроить). Думаю, Powershell гораздо гибче и удобнее в таких вопросах

    Reply ↓
  3. VGHOST

    (2) GreenDragon, Согласен, гибче и удобнее — если не считать размера интерпретатора и настройку инфраструктуры, чтобы оно вообще могло выполняться. В корпоративной полностью настроенной сети, когда вся автоматизация писана на PS, это выгодно, но не для точечного применения с многократной загрузкой интерпретатора из CMD-скриптов.

    WSH многократно легче и совместим с любыми версиями Windows, актуальными на текущий момент. Да и данная конкретная задача таких мощностей не требует…

    Reply ↓
  4. iov

    не удалось запустить приложение код ошибки 8 (win 8.1)

    Reply ↓
  5. VGHOST

    (4) iov, Под W8 не тестировал, только под W7/Srv2008.

    Попробуй запустить с повышенными привилегиями («Запуск от имени администратора») а также простую командную строку cmd.exe без параметров — вроде была такая ошибка при несуществующей рабочей папке (/W), либо проблема в самой командной строке.

    Какие параметры передавал скрипту?

    Reply ↓
  6. GreenDragon

    (3)

    если не считать размера интерпретатора и настройку инфраструктуры

    Это ты о чём вообще?

    но не для точечного применения с многократной загрузкой интерпретатора из CMD-скриптов.

    И зачем в принципе cmd, когда всё прекрасно пишется на PS?

    с любыми версиями Windows, актуальными на текущий момент

    Актуальными на данный момент можно считать только операционки, выпущенные после WinXP. Все они работают с PS (Хотя и WinXP тоже поддерживает PS)

    Reply ↓
  7. VGHOST

    (6) GreenDragon, О времени запуска первого скрипта для начала — PS раскочегаривается медленнее жабы. Но это как раз мелочи.

    А вот скажи, ты все скрипты свои подписываешь или демократию у себя в сети развел?

    Инструмент действительно мощный, и чтобы ваять вредоносный код на нем семи пядей во лбу быть не надо…

    Билли (или кто там теперь рулит) не зря по умолчанию поставил политику restricted.

    У CMD своя ниша, у PS — своя. Там, где нужно подряд запустить несколько программ с почти статическими параметрами, раскочегаривать PS нет никакого смысла. Причем ниша последнего сильно наступает на владения компилируемых языков, и приблуды сложнее выложенного здесь скрипта я бы предпочел делать с использованием полноценного отладчика. Того гляди GUI на нем писать начнут, как на питоне и подобных…

    CMD безусловно убогий и кривой, зато простой и быстрый. Замечательно, что MS родил наконец что-то не такое глючное и сравнимое по возможностям с интерпретаторами под Linux 30-летней выдержки (и даже слегка перестарался :)), но срочно переползать на него и переписывать имеющееся хозяйство нет никакого желания. Они бы начали делать его лет 15 назад вместе с ядром NT 🙁

    Была бы у меня своя сеть я бы тоже озаботился доменными политиками, раздачей сертификатов и скриптами на PS, или лучше приличной библиотекой в бинариках, безо всяких прокладок-интерпретаторов.

    Только вместо этого у меня в хозяйстве мелкие сервера, которые толком никто не админит, и покрупнее, админам которых не сильно озабочены стройностью инфраструктуры, когда за оптимизацию никто не платит, заморачиваться не хотят.

    В такой ситуации вполне устраивают менее требовательные вещи, хоть и отладчика приличного (бесплатного) не найти, разве только ECMAScript + Eclipse…

    Впрочем, это все демагогия и споры о вкусах.

    Что я выложил, то выложил, не вижу смысла далее полемику разводить.

    Reply ↓
  8. GreenDragon

    Спасибо, достойный и развёрнутый ответ.

    Для больших сетей и периодически решаемых в них задач, прекрасно подходит PS. В твоём конкретном случае с маленькой сетью, действительно нет особой нужды заморачиваться. Про скорость… Ну, я тут не разруливаю скриптами посадки/взлёты самолётов или отправление поездов с атомной станции, так что задержка запуска на пару-тройку секунд не является критичным параметром для выбора среды.

    Политики… По этому поводу можно заглянуть сюда. Батники, кстати, вполне себе успешно могут тоже дел наворотить, так что с точки зрения безопасности PS скрипты более контролируемы.

    Для меня батники имеют только один плюс — большая часть эникейщиков сможет после меня разобраться и модифицировать его.

    В общем, ок. Благодарю за уделённое на ответы время и приятный диалог!

    Reply ↓
  9. VGHOST

    (8) GreenDragon, Взаимно.

    И спасибо за ссылку — сделать скрипт для групповой подписи других скриптов интересная идея.

    Reply ↓
  10. Spoke37

    Реализация для дочерних процессов 2го уровня не планируется?

    Reply ↓
  11. VGHOST

    (10) Spoke37, Увы, только за отдельную плату.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *