Я пытаюсь отправить (серию) заданий в SGE (FWIW, это последовательность моделирования молекулярной динамики Gromacs), в которой все задания идентичны, за исключением суффикса, такого как input01
, input02
и т. д. Я написал команды для выполнения таким образом, чтобы суффикс правильно обрабатывался последовательностью команд.
Однако я не могу найти способ получить среду exec для получения этой переменной. Согласно справочной странице qsub
, -v var
должен это сделать.
$ export i=19
$ export | grep ' i='
declare -x i="19"
$ env | grep '^i='
i=19
Затем я отправляю следующий скрипт (run.sh
), чтобы узнать, получен ли он:
if [ "x" == "x$i" ]; then
echo "ERROR: \$i not set"
else
echo "SUCCESS: \$i is set"
fi
Я отправляю задание следующим образом (в том же сеансе, что и команда export
выше):
$ qsub -N "test_env" -cwd -v i run.sh
Your job 4606 ("test_env") has been submitted
Поток ошибок пуст, а выходной поток имеет:
$ cat test_env.o4606
ERROR: $i not set
Я также безуспешно пробовал следующие команды:
$ qsub -N "test_env" -cwd -v i -V run.sh
$ qsub -N "test_env" -cwd -V run.sh
$ qsub -N "test_env" -cwd -v i=19 -V run.sh
$ qsub -N "test_env" -cwd -v i=19 run.sh
Если я добавлю строку i=19
в начало run.sh
, то получится:
$ cat test_env.o4613
SUCCESS: $i is set as 19
Сейчас я рассматриваю возможность создания одного файла для каждого задания, которое по сути будет таким же, но будет иметь строку i=xx
в качестве первого. Это выглядит не очень практично, но это было бы решением.
Будет ли лучшее решение?