Я пытаюсь написать сценарий bash, который отправляет несколько заданий в кластер (планировщик SGE) и что каждое из них ожидает завершения предыдущего, например:
HOLD_ID=$(qsub JOB1.sh | cut -c 10-16)
HOLD_ID=$(qsub -hold_jid $HOLD_ID JOB2.sh | cut -c 10-16)
HOLD_ID=$(qsub -hold_jid $HOLD_ID JOB3.sh | cut -c 10-16)
Однако это отлично работает, теперь я хочу добавить в этот конвейер задание с удерживаемым массивом, например:
qsub -hold_jid $HOLD_ID -t 1-$NB_OF_SUBJOBS JOB4.sh
Но здесь количество подработок ($NB_OF_SUBJOBS
), которые у меня будут, зависит от результата JOB2.sh.
Я хочу, чтобы это был быстрый мастер-скрипт, который просто отправляет все задания. Я не хотел бы немного поспать или что-то в этом роде, что было моей первой попыткой. Работа, от которой зависит нужный мне номер (JOB2.sh), относительно длительна по времени. Поскольку последняя строка оценивается при отправке, любая переменная или файл с количеством подзаданий, созданных предыдущим JOB2.sh, не будет работать. Любые идеи?
Большое спасибо,
Дэйвид