J'ai un script qsub comme
#####----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
Le problème est-- il place tous les fichiers d'erreur et de sortie (job1.eJOBID & job1.oJOBID) dans le même répertoire à partir duquel j'exécute qsub submit_job.sh pendant que je veux enregistrer ces fichiers (fichier journal de sortie et d'erreur dans le même fichier différent) (spécifié comme $ SEED_output). J'ai essayé de changer la ligne comme
/home/user1/run.sh $SEED -o $SEED_output
Mais ça n'a pas marché. Toute suggestion ?? Comment puis-je spécifier le chemin et le nom de la sortie par défaut et du fichier journal des erreurs ??
En règle générale, les fichiers d'erreur et de sortie sont donnés sous forme de directives pbs dans le script qsub ou d'options de ligne de commande au script qsub comme suit:
#! /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
ou comme une option de ligne de commande pour qsub comme ceci:
qsub -o /mypath/output.txt -e /mypath/error.txt submit_job.sh
Avec la première option, je ne pense pas que vous puissiez utiliser une variable car le Shell ne regardera pas les lignes commentées. De plus, je pense que PBS traite les lignes commentées avant le Shell. Si vous connaissez le chemin lorsque vous appelez qsub, vous pouvez essayer la deuxième option. Vous pouvez également essayer de simplement rediriger la sortie et l'erreur dans le script lui-même:
/home/user1/run.sh $SEED > ${SEED}/output.txt 2> ${SEED}/error.txt
La troisième option est probablement la plus simple. Les fichiers de sortie et d'erreur peuvent toujours être créés dans le répertoire d'exécution, bien qu'ils soient probablement vides.
À première vue, vous avez besoin de crochets autour de votre variable dans la déclaration -o.
/home/user1/run.sh $SEED -o ${SEED}_output
Sinon, bash recherche une variable appelée $ {SEED_output} qui n'existe pas.