Я пытаюсь отправить (серию) заданий в 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
, как и первая. Это не выглядит очень практичным, но это было бы решением.
Будет ли лучшее решение?
qsub -N "test_env" -cwd -v="$i" run.sh
должно работать нормально. - person Simon O'Hanlon   schedule 13.08.2015