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

13

Encontrei este bashscript no GitHub que quero usar para o 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!"
mlateb
fonte

Respostas:

19

As linhas que começam com #$são opções para qsub, um comando usado para enviar uma tarefa ao cluster SGE, um sistema de agendamento explicado neste leia - me :

O uso do ambiente em cluster BIMSB (que em breve será chamado de MAX) é semelhante ao uso de ambientes unix / linux para o envio de tarefas (por exemplo, execução de scripts ou outro software). A diferença é que você precisa especificar os recursos necessários com antecedência. O cluster é controlado por um SGE (Sun Grid Engine Software) que organiza as filas e os recursos. Esse tipo de sistema de agendamento é necessário quando recursos computacionais limitados são compartilhados por muitos. E seria útil se você estiver executando alinhamentos para várias amostras e quiser distribuir essas tarefas (tarefas) por várias máquinas ou CPUs, ou ao executar simulações estatísticas que precisam ser executadas em várias CPUs por um longo tempo. Para esses casos e muitos mais similares,

O SGE fará o "agendamento de trabalhos". Isso significa que você pode enviar todos os seus trabalhos e o SGE os enfileirará e executará quando os recursos solicitados estiverem disponíveis. O SGE também alcançará "balanceamento de carga" onde os trabalhos serão distribuídos para que nós específicos não sejam sobrecarregados. Além disso, o SGE permitirá que você faça "monitoramento e contabilidade de trabalhos", o que será útil quando você quiser verificar se o seu trabalho está em execução e, se falhar, ajudará você a entender o que deu errado.

A sintaxe do qsubcomando é explicada em sua página de manual , seu script usa as seguintes opções:

  • -l h_rt=<hh:mm:ss> - especifique o tempo máximo de execução (horas, minutos e segundos)
  • -V - passar todas as variáveis ​​de ambiente para o trabalho
  • -N <jobname>- especifique o nome do trabalho. Você verá quando usar qstat, para verificar o status de 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 explica Como enviar um trabalho usando o qsub, é possível definir as qsubopções diretamente no script nas linhas que começam com #$. Essa é uma alternativa para transmiti-los com o qsubcomando na linha de comando.

sobremesa
fonte