2012-06-26 3 views
1

작업 배열의 작업 색인을 다른 bash 스크립트의 매개 변수로 전달하려고합니다.LSF 작업 배열의 작업 색인 참조

numSims=3 
numTreatments=6 # uses numTreatments top rows of parameters.csv 
maxFail=10 
j=1 
while [ $j -le $numSims ]; 
do 
    bsub -q someQueue -J "mySim[1-$numTreatments]%2" ./another_script.sh $LSB_JOBINDEX $j $maxFail 
    let j=j+1 
done 

여기에 궁극적 인 아이디어는 1, ..., numTreatments, numSims 작업 (시뮬레이션)의 각각에 대해 제출하는 것입니다. 한 번에 두 개의 작업을 실행하고 싶습니다 (%2). 출력 형식은 XX_indexNumber_simNumber입니다. 여기서 indexNumber는 1, ..., numTreatments, simNumber는 1, ..., numSims에서 실행됩니다.

이상 적으로이 스크립트의 일부로 제출 된 모든 것은 동일한 작업 ID를 갖습니다. j이있는 모든 작업에 구별 된 작업 ID가 할당되어 있기 때문에 아직 올바르게 설정되지 않았습니다. 즉각적인 문제는 another_script.sh가 $LSB_JOBINDEX을 입력으로 인식하지 못한다는 것입니다. 첫 번째로 전달 된 매개 변수는 두 개 뿐이며 $j$maxFail입니다.$LSB_JOBINDEX 대신 다른 변수를 넣으면 아무런 문제가 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?


편집 - 내가 시도한 몇 가지 : this link에서 "$LSB_JOBINDEX", ${LSB_JOBINDEX}, %II=$LSB_JOBINDEX; bsub ... $I $j $maxFail

+0

'$ LSB_JOBINDEX'가 설정된 곳이 표시되지 않습니다. 비어 있고 따옴표가 붙지 않으므로 마치 행동에 일관성이없는 것처럼 보이는 것입니다. –

+0

내가 이해하는 바로는, [LSB_JOBINDEX]는 작업 배열에 대해 자동으로 정의됩니다 (예 : [here] (http://rc.fas.harvard.edu/kb/high-performance-computing/lsf-submitting-lots-of- short-jobs-job-arrays /)와 [here] (http://www.csc.fi/english/pages/murska_guide/batch_jobs/serial_batch_jobs) – Sarah

+0

글쎄, 그때 웬일인지는 그렇지 않다. 어쨌든 나는 그것과 다른 변수들에 따옴표를 두는 것을 추천한다. –

답변

5

:

정의는 위의 단지 하나의 배치 작업을 시작합니다, 그러나 하위 작업 환경 변수 $ LSB_JOBINDEX가 1에서 100 사이의 값을 갖는 100 개의 일괄 처리 작업.이 변수는 실제 작업 실행 명령에서 활용 될 수 있습니다. o 각 하위 작업이 처리됩니다.

귀하의 경우, 이는 $LSB_JOBINDEX 변수가 another_script.sh 스크립트에서 사용 가능하다는 것을 의미합니다. 매개 변수로 전달할 필요는 없지만 스크립트에서 $LSB_JOBINDEX에 액세스하면됩니다.

+0

다시 한번 감사드립니다.'$ LSB_JOBINDEX'의 6 가지 간단한 사용법을 살펴본 후에 좋은 설명에 공정한 기회를주지 않았습니다. 이 강의는 첫 번째 링크의 디자이너에게 퍼뜨려야합니다 ... – Sarah