2013-01-25 1 views
0

내가이qsub와 소스를 함께 사용할 수 있습니까?

#!/bin/bash 

#set parameters (I have many) 
... 

#find the files and do iteratively 
for File in $FileList; do 
    source MyProcessing.sh 
done 

MyProcessing.sh처럼 별도 파일들을 처리하는 쉘 스크립트를 썼다는 호출하는 스크립트이며, 주요 스크립트의 변수와 함수를 호출하는 스크립트에 사용됩니다.

이제 쉘 스크립트를 클러스터로 옮기고 반복에서 qsub을 사용하고 싶습니다. 시도했습니다.

하지만이 방법으로는 작동하지 않습니다. 누구든지 도울 수 있니? 미리 감사드립니다.

+0

감사합니다. 나는 고쳤다. –

+0

"qsub"란 무엇입니까? –

+0

qsub는 그리드에서 쉘 스크립트를 실행하는 데 사용됩니다. –

답변

3

변수 및 함수는 스크립트에 대해 로컬입니다. 즉, source MyProcessing.sh이 작동하지만 bash MyProcessing.sh은 작동하지 않습니다. 두 번째 구문은 새로운 Unix 프로세스와 Unix 프로세스가 분리되어 있음을 의미하는 서브 쉘을 만듭니다.

파이프를 통해 호출 한 이후 qsub에 대해서도 마찬가지입니다. BASH는 qsub이라는 새 프로세스를 만들고 으로 표준 입력을 설정합니다. 이 23 바이트를 qsub으로 전달하기 만하면됩니다.

이 기능을 사용하려면 기본 스크립트와 100 % 독립적 인 새 스크립트를 작성해야합니다 (즉, 변수 나 함수를 사용해서는 안됨). 그런 다음 설정하는 방법을 알아 보려면 qsub 설명서를 읽어야합니다. 일반적으로 도구는 MyProcessing.sh 사본을 클러스터의 모든 노드에 배포 한 후에 만 ​​작동합니다.

또한이 도구는 스크립트에 필요한 다른 데이터를 파악하지 않으므로 클러스터 노드에도 파일을 복사해야합니다 (공유 파일 시스템에 파일을 올려 놓음).

0

사용 :

당신은 qsub 쉘에서 현재의 변수를 설정해야합니다
(set; echo "source MyProcessing.sh") | qsub 

.