Qual é o significado das linhas de script bash começando com # $?

13

Eu encontrei este script bash no GitHub que eu quero use para meu próprio trabalho. Minha pergunta é a seguinte: O que significam as linhas 2 a 5? Eles são apenas comentários ou servem a algum 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!"
    
por mlateb 05.05.2018 / 10:07

1 resposta

19

As linhas que começam com #$ são opções para qsub , um comando usado para enviar um trabalho para o cluster SGE, um sistema de agendamento explicado em este arquivo :

Using the BIMSB (soon to be called MAX) cluster environment is similar to using unix/linux environments for your job submission (e.g running your scripts or other software). The difference is that you need to specify needed resources beforehand. The cluster is controlled by a SGE (Sun Grid Engine Software) that organizes the queues and resources. This sort of scheduling system is necessary when limited computational resources are shared by many. And, it would be useful if you are running alignments for multiple samples and want to distribute those tasks (jobs) across multiple machines or CPUs, or when running statistical simulations that needs to run on multiple CPUs for a long time. For these cases and many more alike, you just need to submit your job script (which is a shell script) and Sun Grid Engine will take care of the rest (as long as there is no error in your script).

SGE will do the "job scheduling". That means you can submit all your jobs and SGE will queue them and run them when resources you requested becomes available. SGE will also achieve "load balancing" where the jobs will be distributed so that specific nodes do not get overloaded. In addition, SGE will allow you to do "job monitoring and accounting" which will be useful when you want to check if your job is running ,and if it failed it will help you understand what went wrong.

A sintaxe do comando qsub é explicada na sua página de manual , seu script usa o seguinte opções:

  • -l h_rt=<hh:mm:ss> - especifica o tempo máximo de execução (horas, minutos e segundos)
  • -V - passa todas as variáveis de ambiente para o trabalho
  • -N <jobname> - especifica o nome do trabalho. Isso você verá quando usar qstat para verificar o status dos seus trabalhos.
  • -j y[es]|n[o] - especifica se o fluxo de erro padrão da tarefa é mesclado ou não no fluxo de saída padrão

Como Como enviar um trabalho usando o qsub explica, é possível definir as opções qsub diretamente no script em linhas que começam com #$ . Esta é uma alternativa para passá-los com o comando qsub na linha de comando.

    
por dessert 05.05.2018 / 11:26