SGE를 사용하여 Rocks 클러스터에서 실행중인 일부 기존 과학 코드가 있습니다. qsub 스크립트 (즉, Sun Grid Engine이 소요되고 실행하는 스크립트)를 생성하는 응용 프로그램 별 작업 제출 스크립트가 있습니다.SGE 작업 내의 클러스터에서 티를 사용하여 SIGTERM 문제 해결
qsub 스크립트 내에서 기존 앱이 호출됩니다. 이 응용 프로그램은 출력을 STDOUT으로 보냅니다. SGE는 STDOUT을 가로 챈 다음이를 사용자 홈 디렉토리의 파일에 스풀링하므로 사용자는 결과를 실시간으로 볼 수 있습니다. 이 동작을 유지하기를 원하지만 동시에 모든 출력을 백그라운드에서 투명하게 기록하고 싶습니다. 나는 이것을 달성하기 위해 티가 완벽 할 것이라고 생각했다.
그래서 작업 제출 스크립트를 수정하여 응용 프로그램을 실행하고 STDOUT을 tee로 파이프하면 STDOUT이 작업 완료 후 중앙 저장소에 복사되는 파일에 저장됩니다. 응용 프로그램은 실행하고 다음과 같이 티 파이프됩니다 :
\$GMSCOMMAND | tee \$SCRATCHDIR/gamess_output.log
문제는 내가 여러 노드를 요청할 특히, 나는 앱이 SIGTERMs으로 죽어되었습니다 티하기 위해 코드를 배관을 시작한 때부터이다. 나는 티와 함께 -i (인터럽트 무시) 매개 변수를 사용해 보았습니다. 아무런 차이가 없습니다.
앱 출력을 파일로 리디렉션 한 다음 앱이 완료되면 파일에 cat하면 문제가 없지만 사용자가 실시간으로 결과를 볼 수 있도록 허용 할 수 없습니다 (중요한 요구 사항 임).
이 티의 사용에 실패한 이유에 대한 아이디어가 있으십니까? 또는 원하는 기능을 어떻게 달성 할 수 있을지에 대한 아이디어가 있습니까?
'tee' 명령을'cat'으로 바꾸어서 문제가되는 파이프인지 알아볼 수 있습니까? –
SIGPIPE가 아닌 SIGTERM입니까? strace -o tr.gms. $ SGE_JOBID를 넣어 시스템 호출과 신호를 추적하십시오. 어쩌면 $ GMSCOMMAND와 tee를 모두 추적 할 수 있습니다. –