DATASTAGE: как запустить больше заданий экземпляра параллельно с помощью DSJOB - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть вопрос.

Я хочу запустить несколько экземпляров одного и того же задания параллельно из скрипта: у меня есть цикл, в котором я вызываю задания с dsjob и без опции "-wait" и "-jobstatus".

Я хочу, чтобы задания были завершены до завершения сценария, но я не знаю, как проверить, завершился ли экземпляр задания. Я хотя и использую команду ожидания, но она не подходит.

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 23 декабря 2011

Во-первых, вы должны убедиться, что выбран вариант компиляции задания «Разрешить множественный экземпляр».

Второй:

#!/bin/bash
. /home/dsadm/.bash_profile

INVOCATION=(1 2 3 4 5)

cd $DSHOME/bin
for id in ${INVOCATION[@]}
do
        ./dsjob -run -mode NORMAL -wait test demo.$id
done

проект - тест

job - demo

$ id - идентификатор вызова

две строки в оболочке scipt: гарантируют, что путь к среде может работать.

0 голосов
/ 31 августа 2015
  • Вызов заданий в цикле без опции ожидания или состояния задания

  • после цикла проверьте статус заданий с помощью команды dsjob

Пример - dsjob -jobinfo имя проекта jobname.invocationid

  • вы также можете закодировать еще один цикл и использовать команду сна под этим

  • напишите свою дальнейшую логику в соответствии со статусом заданий

но хорошо создать Последовательность заданий для одновременного вызова этого задания с несколькими экземплярами с помощью различных invoaction-идентификаторов

  • создать задание последовательности, если оно выполняется в том же процессе

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

Лучший вариант создать стандартный обобщенный скрипт, в котором каждая вещь будет создаваться или получать значение в соответствии с параметрами входной командной строки

Пример - файлы журналов на основе имени задания + id-вызова

Затем запланируйте один и тот же сценарий для различных параметров или вызовов.

0 голосов
/ 16 июня 2012

Запустите задания, как вы сказали, без -wait, а затем выполните цикл dsjob -jobinfo и проанализируйте выходные данные для состояния задания 1 или 2. Когда все задания возвращают это состояние, все они завершены.

Возможно, вы обнаружите, что вы проверяете состояние задания до того, как оно действительно запустится, и вы можете получить старое состояние. Вы можете исправить это, предварительно сбросив экземпляр задания и ожидая состояния «Не работает», перед запуском задания.

...