# $로 시작하는 bash 스크립트 줄의 의미는 무엇입니까? $l_file; do

내가 찾은 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!"


답변

로 시작하는 행 #$은 옵션에 대한 옵션으로 qsub, SGE 클러스터에 작업을 제출하는 데 사용되는 명령 이며 , 이 readme 에서 설명 된 스케줄링 시스템입니다 .

BIMSB (곧 MAX라고도 함) 클러스터 환경을 사용하는 것은 작업 제출 (예 : 스크립트 또는 기타 소프트웨어 실행)에 유닉스 / 리눅스 환경을 사용하는 것과 유사합니다. 차이점은 필요한 리소스를 미리 지정해야한다는 것입니다. 클러스터는 대기열과 자원을 구성하는 SGE (Sun Grid Engine 소프트웨어)에 의해 제어됩니다. 이러한 종류의 스케줄링 시스템은 제한된 계산 리소스가 많은 사람들에게 공유 될 때 필요합니다. 또한 여러 샘플에 대해 정렬을 실행하고 여러 작업 또는 작업을 여러 컴퓨터 또는 CPU에 분산 시키거나 여러 CPU에서 오랫동안 실행해야하는 통계 시뮬레이션을 실행하려는 경우 유용합니다. 이 경우와 더 많은 경우에는

SGE는 “작업 예약”을 수행합니다. 즉, 모든 작업을 제출할 수 있으며 요청한 리소스를 사용할 수있게되면 SGE가 작업을 대기시키고 실행합니다. 또한 SGE는 특정 노드에 과부하가 걸리지 않도록 작업이 분산되는 “로드 밸런싱”을 달성합니다. 또한 SGE를 사용하면 “작업 모니터링 및 계정”을 수행하여 작업이 실행 중인지 확인하고 실패한 경우 무엇이 잘못되었는지 이해하는 데 도움이됩니다.

qsub명령 구문은 맨 페이지에 설명 되어 있으며 스크립트는 다음 옵션을 사용합니다.

  • -l h_rt=<hh:mm:ss> – 최대 실행 시간 (시간, 분 및 초)을 지정하십시오.
  • -V – 모든 환경 변수를 작업에 전달
  • -N <jobname>– 작업 이름을 지정하십시오. 을 (를) 사용하면 qstat작업 상태를 확인할 수 있습니다.
  • -j y[es]|n[o] – 작업의 표준 오류 스트림이 표준 출력 스트림으로 병합되는지 여부를 지정합니다.

으로 의 qsub를 사용하여 작업을 제출하는 방법 하나를 설정할 수 있습니다 설명 qsub으로 시작하는 줄의 스크립트에서 직접 옵션을 #$. 이것은 qsub명령 행에서 명령 과 함께 전달하는 대안 입니다.