web-dev-qa-db-fra.com

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

J'ai trouvé ce script bash sur GitHub que je souhaite utiliser pour mon propre travail. Ma question est la suivante: que signifient les lignes 2 à 5? S'agit-il 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!"
13
mlateb

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

L'utilisation de l'environnement de cluster BIMSB (bientôt appelé 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 (logiciel Sun Grid Engine) qui organise les files d'attente et les ressources. Ce type de système de planification est nécessaire lorsque de nombreuses ressources informatiques sont partagées. De plus, il serait utile que vous exécutiez des alignements pour plusieurs échantillons et que vous souhaitiez répartir ces tâches (travaux) sur plusieurs machines ou processeurs, ou lors de l'exécution de simulations statistiques devant s'exécuter sur plusieurs processeurs pendant une longue période. Pour ces cas et bien d'autres, il vous suffit de soumettre votre script de travail (qui est un script Shell) et Sun Grid Engine se chargera du reste (tant qu'il n'y aura pas d'erreur dans votre script).

SGE se chargera de la "planification des tâches". Cela signifie que vous pouvez soumettre tous vos travaux et que SGE les place en file d'attente et les exécute lorsque les ressources demandées deviennent disponibles. SGE réalisera également un "équilibrage de la charge" au cours duquel les tâches seront réparties de manière à ne pas surcharger certains nœuds. En outre, SGE vous permettra d'effectuer "le suivi et la comptabilité des travaux", ce qui sera utile lorsque vous souhaitez vérifier si votre travail est en cours d'exécution. Si cela échoue, cela vous aidera à comprendre ce qui ne va pas.

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

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

Comme Comment soumettre un travail à l'aide de qsub , explique-t-on, vous pouvez définir les options qsub directement dans le script, dans des lignes commençant par #$. C’est une alternative aux passes avec la commande qsub sur la ligne de commande.

19
dessert