Пакетное задание на люстре не работает: awk: cmd. строка: 1 неожиданный перевод строки или конец строки

Недавно я начал запускать пакетные задания Python в системе Lustre.

Недавно я внес изменения в сценарий оболочки, что привело к ошибке:

awk: cmd. line:1: NR==
awk: cmd. line:1:     ^ unexpected newline or end of string

Сценарий выглядит следующим образом:

#$ -cwd


# Define parallel environment for N cores
#$ -pe openmp 4



# Validation level (e = reject on all problems)
#$ -w e

# Merge stdout and stderr streams: yes/no
#$ -j yes

#name of job (human-friendly)
#$ -N experiment

# array job parameters below:
# which job IDs in the array to run, eg 1-5 or 3
#$ -t 1
# how many jobs of the array to run at a time
#$ -tc 15


MYFILE=all_experiment_parameters.txt.$RANDOM
python Get_Parameter_Settings.py > $MYFILE
SEED=$(awk "NR==$SGE_TASK_ID" $MYFILE)
echo $SEED

python RunExperiment.py $SEED

Это похоже на синтаксис примера, приведенного в разделе «Извлечение данных из i-й строки файла» здесь: http://wiki.gridengine.info/wiki/index.php/Simple-Job-Array-Howto.

Может ли кто-нибудь посоветовать значение сообщения об ошибке (я не понимаю, почему оно предупреждает о «новой строке или конце строки» при указании на середину моего кода) и как это исправить? Я уверен, что это тривиальное изменение, которое я сделал по ошибке, так как раньше оно работало.


person user3140106    schedule 18.03.2015    source источник
comment
Как должен быть установлен $SGE_TASK_ID?   -  person Ignacio Vazquez-Abrams    schedule 18.03.2015
comment
SGE устанавливает переменную ('SGE_TASK_ID') в среде выполняемой задачи, которую можно использовать в сценарии задания для определения правильных входных данных, которые будут использоваться задачей задания (из www3.imperial.ac.uk/bioinfsupport/help/cluster_usage/) ... поэтому я думал, что это было установлено автоматически от Sun Grid Engines..?   -  person user3140106    schedule 18.03.2015


Ответы (2)


Вы получаете сообщение об ошибке:

awk: cmd. line:1: NR==
awk: cmd. line:1:     ^ unexpected newline or end of string

потому что ваша переменная среды SGE_TASK_ID не установлена ​​в этой строке вашего скрипта:

SEED=$(awk "NR==$SGE_TASK_ID" $MYFILE)
person Paul Evans    schedule 18.03.2015
comment
Спасибо за ответ, но я думал, что эта переменная устанавливается автоматически, как упоминалось в моем комментарии выше? - person user3140106; 18.03.2015
comment
@user3140106 user3140106 Сообщение об ошибке показывает, что оно не установлено. - person Paul Evans; 18.03.2015
comment
Я нашел еще одно сообщение о переполнении стека с аналогичным вопросом (stackoverflow.com/questions/16483977/) Кажется, мне нужно найти идентификатор массива переменных, который увеличивается для каждого задания, и установите для него значение $SGE_TASK_ID. Вы знаете, как я могу найти это? - person user3140106; 18.03.2015
comment
Лучше установить переменную вне кода awk: SEED=$(awk -v var="$SGE_TASK_ID" 'NR==var' $MYFILE) - person Jotne; 18.03.2015

Я понял, почему SGE_TASK_ID не устанавливался. Я запускал сценарий оболочки, используя

./shell.sh

вместо того, чтобы отправить его в очередь с помощью

qsub shell.sh

Так что полная ошибка новичка.

person user3140106    schedule 19.03.2015