IJ

9 Выполнение команд

IJ использует единый функционал для выполнения пользовательских параметров, удаленных команд, элементов данных system.run[] без флага "nowait", скриптов (оповещения, внешних и глобальных) и некоторых внутренних команд.

Команда/скрипт выполняется одинаково как на Unix, так и на Windows платформах:

  1. IJ (родительский процесс) создает канал связи
  2. IJ устанавливает этот канал связи для вывода данных от созданного дочернего процесса
  3. IJ создает дочерний процесс (выполняет команду/скрипт)
  4. Создается новая группа процесса (в Unix) или задача (в Windows) для дочернего процесса
  5. IJ считывает из канала данные по истечении установленного времени ожидания или до момента, когда запись прекратится (ВСЕ обработчики/файловые дескрипторы закрыты). Обратите внимание, что дочерний процесс может создать еще некоторое количество процессов и выйти до того, как эти процессы завершатся или будет закрыт обработчик/файловый дескриптор.
  6. Если установленное время ожидания не достигнуто, то IJ ждет завершения начального дочернего процесса или ждет достижения установленного времени ожидания.
  7. На этот момент подразумевается, что всё выполнено и всё дерево процессов (т.е. группа процессов или задача) завершены.

Шаги с 5 по 7 не относятся к удаленным командам, если они выполняются с флагом "nowait".​

IJ предполагает, что команда/скрипт завершили обработку, в тот момент, когда завершился изначальный дочерний процесс И никакие другие процессы все еще не держат открытым обработчик/файловый дескриптор. Когда обработка завершена, ВСЕ созданные процессы завершаются.

Все двойные кавычки и обратная косая черта в команде экранируются обратной косой чертой и вся команда заключается в двойные кавычки.

Смотрите более подробную информацию о пользовательских параметрах, удаленных командах и скриптах оповещения.