Quelle est la signification des lignes de script bash commençant par # $?


13

J'ai trouvé ce bashscript sur GitHub que je veux utiliser pour mon propre travail. Ma question est la suivante: que signifient les lignes 2 à 5? S'agit-il simplement de commentaires ou servent-ils à quelque chose?

#!/bin/bash
#$ -l h_rt=72:00:00
#$ -V
#$ -N index_calc
#$ -j y

source ~/modules.sh

cd $1

l_file=`find . -name 'L*stack' -type f`
for l in $l_file; do
    echo "Running on file:"
    echo $l
      extract=${l:0:45}
    name=${extract}_index.tif
    echo "Name of index stack:"
    echo $name
    echo "Executing code..."
    ~/Documents/misc/spectral/transforms.py \
    -v $l $name evi ndvi nbr ndmi 

done

echo "Done!"

Réponses:


19

Les lignes commençant par #$sont des options pour qsub, une commande utilisée pour soumettre un travail au cluster SGE, un système de planification expliqué dans ce fichier Lisez-moi :

L'utilisation de l'environnement de cluster BIMSB (qui s'appellera bientôt MAX) est similaire à l'utilisation d'environnements Unix / Linux pour la soumission de votre travail (par exemple, l'exécution de vos scripts ou d'autres logiciels). La différence est que vous devez spécifier au préalable les ressources nécessaires. Le cluster est contrôlé par un SGE (Sun Grid Engine Software) qui organise les files d'attente et les ressources. Ce type de système de planification est nécessaire lorsque plusieurs ressources de calcul limitées sont partagées par plusieurs. Et, il serait utile si vous exécutez des alignements pour plusieurs échantillons et souhaitez répartir ces tâches (travaux) sur plusieurs machines ou processeurs, ou lorsque vous exécutez des simulations statistiques qui doivent s'exécuter sur plusieurs processeurs pendant une longue période. Pour ces cas et bien d'autres,

SGE fera la "planification des travaux". Cela signifie que vous pouvez soumettre tous vos travaux et SGE les mettra en file d'attente et les exécutera lorsque les ressources que vous demanderez seront disponibles. SGE réalisera également un "équilibrage de charge" où les travaux seront distribués afin que des nœuds spécifiques ne soient pas surchargés. De plus, SGE vous permettra de faire du "suivi et de la comptabilité des travaux", ce qui sera utile lorsque vous voudrez vérifier si votre travail est en cours d'exécution et s'il a échoué, il vous aidera à comprendre ce qui s'est mal passé.

La syntaxe de la qsubcommande est expliquée sur sa page de manuel , votre script utilise les options suivantes:

  • -l h_rt=<hh:mm:ss> - spécifiez le temps d'exécution maximum (heures, minutes et secondes)
  • -V - transmettre toutes les variables d'environnement au travail
  • -N <jobname>- spécifiez le nom du travail. Vous le verrez lorsque vous l'utiliserez qstatpour vérifier l'état de vos travaux.
  • -j y[es]|n[o] - spécifie si le flux d'erreur standard du travail est fusionné ou non dans le flux de sortie standard

Comme l'explique Comment soumettre un travail en utilisant qsub, on peut définir les qsuboptions directement dans le script dans les lignes qui commencent par #$. C'est une alternative à leur transmission avec la qsubcommande sur la ligne de commande.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.