48 votes

paramètre pour les scripts shell démarré avec qsub

Comment paramétrer un script shell exécuté sur une grille (démarré avec qsub)? J'ai un script shell, où j'utilise getopts pour lire les paramètres.

Lorsque je démarre (qsub script.sh -r firstparam -s secondparam ..), ce script de travail avec qsub je reçois des messages d'erreur,

qsub: option non valide - s

qsub: illégale -r valeur

comme qsub pense que le paramètre est pour lui-même. Pourtant, je n'ai trouvé aucune solution.

Merci

45voto

volks Points 141

Utiliser l’option qsub -v est la bonne manière:

 qsub -v par_name=par_value[,par_name=par_value...] script.sh
 

nom_parse peut être utilisé comme variable dans le script shell.

36voto

jhrf Points 135

En plus de la réponse de volk, pour utiliser les variables de la liste (désignées par -v), vous utilisez simplement le nom que vous avez défini dans votre appel. Alors, disons que vous avez fait un appel à qsub comme suit

qsub -v foo='qux' myRunScript.sh

Alors myRunScript.sh pourrait ressembler à ceci:

 #!/bin/bash
#PBS -l nodes=1:ppn=16,walltime=0:00:59
#PBS -l mem=62000mb
#PBS -m abe

bar = ${foo}
echo ${bar}
 

Où la sortie serait

 qux
 

J'espère que cela t'aides!

22voto

Martin Points 236

Je viens de comprendre comment le résoudre: affichez simplement les commandes du script shell avec echo et dirigez le résultat vers qsub:

echo "./script.sh var1=13 var2=24" | qsub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X