Що означає рядки сценарію bash, що починаються з # $?


13

Я знайшов цей bashскрипт на GitHub, який я хочу використовувати для своєї роботи. Моє запитання таке: Що означають рядки 2 до 5? Це просто коментарі чи вони служать якійсь цілі?

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

Відповіді:


19

Рядки, що починаються з, - #$це параметри для qsubкоманди, що використовується для подання завдання на кластер SGE, система планування, пояснена в цьому читанні :

Використання кластерного середовища BIMSB (скоро його називатимуть MAX) подібне до використання середовищ unix / linux для подання вашої роботи (наприклад, запуск сценаріїв чи іншого програмного забезпечення). Різниця полягає в тому, що потрібно заздалегідь вказати необхідні ресурси. Кластер управляється за допомогою SGE (Sun Grid Engine Software), який організовує черги та ресурси. Така система планування необхідна, коли багато обмежених обчислювальних ресурсів поділяються багатьма. І, було б корисно, якщо ви виконуєте вирівнювання для декількох зразків і хочете розподілити ці завдання (завдання) на декількох машинах або процесорах або під час запуску статистичних симуляцій, які потрібно тривалий час працювати на кількох процесорах. У цих випадках і багато іншого,

SGE зробить "планування роботи". Це означає, що ви можете надіслати всі свої завдання, і SGE поставить їх у чергу і запустити їх, коли потрібні вам ресурси стануть доступними. SGE також досягне «врівноваження навантаження», де завдання розподіляться, щоб певні вузли не перевантажувалися. Крім того, SGE дозволить вам зробити "моніторинг та облік роботи", що буде корисно, коли ви хочете перевірити, чи працює ваша робота, а якщо вона не вдалася, допоможе зрозуміти, що пішло не так.

Синтаксис qsubкоманди пояснюється на його сторінці , ваш сценарій використовує такі параметри:

  • -l h_rt=<hh:mm:ss> - вказати максимальний час роботи (години, хвилини та секунди)
  • -V - передайте всі змінні середовища в завдання
  • -N <jobname>- вказати назву завдання. Це ви побачите, коли використовуєте qstat, щоб перевірити стан своїх робочих місць.
  • -j y[es]|n[o] - визначає, чи об'єднується стандартний потік помилок завдання у стандартний вихідний потік

Як пояснити подання завдання за допомогою qsub, можна встановити qsubпараметри безпосередньо в сценарії в рядках, що починаються з #$. Це альтернатива передачі їх qsubкомандою в командному рядку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.