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

У меня есть скрипт qsub как

#####----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

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


person d.putto    schedule 01.02.2012    source источник
comment
У меня было в slurm #SBATCH --output="demo.%j.%N.out" #SBATCH --error="demo.%j.%N.err", как его адаптировать к qsub?   -  person Charlie Parker    schedule 20.10.2020
comment
связанные: community.openpbs.org/t/ How to include the job id and other info in the output file for qsub?   -  person Charlie Parker    schedule 18.11.2020


Ответы (3)


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

#! /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, вы можете попробовать второй вариант. В качестве альтернативы вы можете попробовать просто перенаправить вывод и ошибку в самом скрипте:

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

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

person Andy    schedule 02.02.2012
comment
Я могу использовать переменные PBS, такие как $PBS_JOBID, в строке #PBS -o. - person gerardw; 30.04.2014
comment
@gerardw, возможно, это зависит от версии инструментов? Я не могу использовать переменные PBS в строке #PBS -o (переменные не разрешены). - person waldyrious; 26.02.2018
comment
У меня было в slurm #SBATCH --output="demo.%j.%N.out" #SBATCH --error="demo.%j.%N.err", как его адаптировать к qsub? - person Charlie Parker; 20.10.2020
comment
что, если вы хотите включить номер jobid и другую подобную информацию? - person Charlie Parker; 18.11.2020

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

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

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

person Andy    schedule 01.02.2012
comment
Спасибо, что упомянули об этом, но мне все равно не повезло :( Я попробовал /home/user1/run.sh $SEED -o ${SEED}_output и ничего не изменилось. Просто чтобы было понятно $SEED (или ${SEED}) это путь к каталогу.Поэтому я думаю, что вывод должен сохраняться в файле _output в каталоге ${SEED} !!! - person d.putto; 02.02.2012
comment
-o передается в run.sh, так что это не сработает, если run.sh не обрабатывает -o как аргумент командной строки. - person Andy; 02.02.2012
comment
У меня было в slurm #SBATCH --output="demo.%j.%N.out" #SBATCH --error="demo.%j.%N.err", как его адаптировать к qsub? - person Charlie Parker; 20.10.2020
comment
что, если вы хотите включить номер jobid и другую подобную информацию? - person Charlie Parker; 18.11.2020

Я столкнулся с той же проблемой. И мой обходной путь должен был иметь:

#$ -N script-name
#$ -wd <path-to-project>/log 
cd ..

в сценарии qsub. Теперь ошибка и выходной файл сохраняются в <path-to-project>/log и скрипт работает в <path-to-project> По крайней мере у меня так сработало

person L3000    schedule 13.03.2021