Jakie jest znaczenie linii skryptu bash zaczynających się od # $?

13

W GitHub znalazłem ten bashskrypt , którego chcę używać do własnej pracy. Moje pytanie brzmi: co oznaczają wiersze od 2 do 5? Czy to tylko komentarze, czy służą jakimś celom?

#!/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
źródło

Odpowiedzi:

19

Wiersze rozpoczynające się od #$to opcje dla qsubpolecenia służącego do przesłania zadania do klastra SGE, system planowania wyjaśniony w tym pliku readme :

Korzystanie ze środowiska klastrowego BIMSB (wkrótce nazywanego MAX) jest podobne do korzystania ze środowisk unix / linux do przesyłania zadań (np. Do uruchamiania skryptów lub innego oprogramowania). Różnica polega na tym, że musisz wcześniej określić potrzebne zasoby. Klaster jest kontrolowany przez SGE (Sun Grid Engine Software), który organizuje kolejki i zasoby. Ten rodzaj systemu planowania jest konieczny, gdy wielu zasobów korzysta z ograniczonych zasobów obliczeniowych. Przydałoby się również, jeśli uruchamiasz wyrównywanie dla wielu próbek i chcesz rozdzielić te zadania (zadania) na wiele komputerów lub procesorów, lub podczas przeprowadzania symulacji statystycznych, które muszą działać na wielu procesorach przez długi czas. W tych i wielu innych przypadkach

SGE wykona „planowanie zadań”. Oznacza to, że możesz przesłać wszystkie swoje zadania, a SGE ustawi je w kolejce i uruchomi, gdy zasoby, o które poprosisz, staną się dostępne. SGE osiągnie także „równoważenie obciążenia”, w którym zadania będą dystrybuowane, tak aby określone węzły nie zostały przeciążone. Ponadto SGE pozwoli ci na „monitorowanie i rozliczanie zadań”, które będą przydatne, gdy będziesz chciał sprawdzić, czy twoje zadanie jest uruchomione, a jeśli się nie powiedzie, pomoże ci zrozumieć, co poszło nie tak.

Składnia qsubpolecenia wyjaśniona jest na jego stronie podręcznej , skrypt używa następujących opcji:

  • -l h_rt=<hh:mm:ss> - określ maksymalny czas działania (godziny, minuty i sekundy)
  • -V - przekazać wszystkie zmienne środowiskowe do zadania
  • -N <jobname>- podaj nazwę zadania. Zobaczysz to, gdy używasz qstat, aby sprawdzić status swoich zadań.
  • -j y[es]|n[o] - określa, czy standardowy strumień błędów zadania jest łączony ze standardowym strumieniem wyjściowym

Jak Jak złożyć pracę używając qsub wyjaśnia można ustawić qsubopcje bezpośrednio w skrypcie w linii, które zaczynają się #$. Jest to alternatywa dla przekazania ich za pomocą qsubpolecenia w wierszu polecenia.

deser
źródło