¿Cuál es el significado de las líneas de script bash que comienzan con # $?

13

Encontré este bashscript en GitHub que quiero usar para mi propio trabajo. Mi pregunta es la siguiente: ¿Qué significan las líneas 2 a 5? ¿Son solo comentarios o sirven para algún propósito?

#!/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!"
mlateb
fuente

Respuestas:

19

Las líneas que comienzan con #$son opciones para qsub, un comando utilizado para enviar un trabajo al clúster SGE, un sistema de programación explicado en este archivo Léame :

El uso del entorno de clúster BIMSB (que pronto se denominará MAX) es similar al uso de entornos unix / linux para el envío de su trabajo (por ejemplo, ejecutar sus scripts u otro software). La diferencia es que debe especificar los recursos necesarios de antemano. El clúster está controlado por un SGE (Sun Grid Engine Software) que organiza las colas y los recursos. Este tipo de sistema de programación es necesario cuando muchos recursos informáticos limitados son compartidos por muchos. Y sería útil si está ejecutando alineaciones para múltiples muestras y desea distribuir esas tareas (trabajos) en múltiples máquinas o CPU, o cuando ejecuta simulaciones estadísticas que deben ejecutarse en múltiples CPU durante mucho tiempo. Para estos casos y muchos más por igual,

SGE hará la "programación del trabajo". Eso significa que puede enviar todos sus trabajos y SGE los pondrá en cola y los ejecutará cuando los recursos que solicitó estén disponibles. SGE también logrará un "equilibrio de carga" donde los trabajos se distribuirán para que nodos específicos no se sobrecarguen. Además, SGE le permitirá realizar "monitoreo y contabilidad de trabajos", lo que será útil cuando desee verificar si su trabajo se está ejecutando, y si falló, lo ayudará a comprender qué salió mal.

La sintaxis del qsubcomando se explica en su página de manual , su script usa las siguientes opciones:

  • -l h_rt=<hh:mm:ss> - especifique el tiempo máximo de ejecución (horas, minutos y segundos)
  • -V - pasar todas las variables de entorno al trabajo
  • -N <jobname>- especifique el nombre del trabajo. Esto lo verá cuando lo use qstat, para verificar el estado de sus trabajos.
  • -j y[es]|n[o] - especifica si la secuencia de error estándar del trabajo se fusiona o no con la secuencia de salida estándar

Como explica cómo enviar un trabajo usando qsub, se pueden configurar las qsubopciones directamente en el script en líneas que comienzan con #$. Esta es una alternativa a pasarlos con el qsubcomando en la línea de comandos.

postre
fuente