Подтвердить что ты не робот

Как указать файл журнала ошибок и выходной файл в qsub

У меня есть qsub script как

#####----submit_job.sh---#####
    #!/bin/sh
    #$ -N job1
    #$ -t 1-100
    #$ -cwd
    SEEDFILE=/home/user1/data1
    SEED=$(sed -n -e "$SGE_TASK_ID p" $SEEDFILE)
    /home/user1/run.sh $SEED 

Проблема в том, что она помещает все файлы ошибок и вывода (job1.eJOBID и job1.oJOBID) в тот же каталог, откуда я запускаю qsub submit_job.sh, пока я хочу сохранить этот файл (файл вывода и файл ошибок в том же самом месте (указано как $SEED_output). Я попытался изменить строку как

/home/user1/run.sh $SEED -o $SEED_output

Но это не сработало. Любое предложение?? Как указать путь и имя файла вывода по умолчанию и файла журнала ошибок?

4b9b3361

Ответ 1

Обычно файлы ошибок и вывода задаются как директивы pbs в qsub script или как параметры командной строки для qsub script следующим образом:

#! /bin/bash
#PBS -q queue_name
#PBS -A account_name
#PBS -l nodes=12:ppn=12
#PBS -l walltime=18:00:00
#PBS -e /mypath/error.txt
#PBS -o /mypath/output.txt

или в качестве опции командной строки для qsub следующим образом:

qsub -o /mypath/output.txt -e /mypath/error.txt submit_job.sh

С первым вариантом я не думаю, что вы можете использовать переменную, поскольку оболочка не будет рассматривать строки, которые прокомментированы. Плюс я думаю, что PBS имеет дело с прокомментированными строками перед оболочкой. Если вы знаете путь, когда вы вызываете qsub, вы можете попробовать второй вариант. В качестве альтернативы вы можете попробовать просто перенаправить вывод и ошибку в сам script:

/home/user1/run.sh $SEED > ${SEED}/output.txt 2> ${SEED}/error.txt

Третий вариант, вероятно, самый простой. Файлы вывода и ошибки все равно могут быть созданы в каталоге запуска, хотя они, вероятно, будут пустыми.

Ответ 2

На первый взгляд вам нужны скобки вокруг вашей переменной в объявлении -o.

/home/user1/run.sh $SEED -o ${SEED}_output

В противном случае bash ищет переменную с именем ${SEED_output}, которая не существует.