2016-08-26 3 views
2

소개는프로세스가 컴퓨터 클러스터에서 실행되는 동안 표준 출력에 액세스하는 방법?

나는 내가 .pbs 파일을 통해 (qsub) 작업을 제출하는 컴퓨터 클러스터를 사용합니다. 기본값은 qsub 명령이 실행되는 작업 디렉토리의 파일에 표준 출력과 표준 오류를 인쇄하는 것입니다.

문제 나를 위해

문제는 내가 직접에서 프로세스의 발전을 모니터링 할 수 싶어요 동안 표준 출력 및 표준 오류 파일이 과정의 끝에에만 나타납니다 것입니다.

생각은

나는 다음과 같은 옵션이 표준 출력 및 표준 오류에 대한 특정 파일 이름과 위치를 표시하기 위해

#PBS -o 
#PBS -e 
#PBS -j [oe/eo] 

존재 알고있다. 그러나 두 점 ( #PBS -t를 통해) 배열을 사용할 때 어떻게 작동하는지 내가 확실히 모르는

  1. ... 나에게 분명하다. PBS_ARRAYID의 표준 출력은 이전 표준 출력을 덮어 쓰시겠습니까? 전체 배열에 대한 모든 표준 출력이 동일한 파일에 인쇄되거나 파일 이름에 PBS_ARRAYID을 포함시키는 방법이 있습니까?

  2. 이 옵션을 사용하면 프로세스가 끝나기 전에 표준 출력에 액세스하는 데 도움이됩니까?

질문 프로세스가 프로세스는 컴퓨터 클러스터에 제출 될 때 이상 전에 표준 출력 및 표준 오류를 시각화 할 수있는 방법

? this documentation에 따르면

답변

1

컴퓨터 클러스터에서 적어도 표준 출력은 프로세스 마지막에만 #PBS -o에 저장된 RAM에 저장됩니다. 쉘 스크립트에서 표준 출력을 명시 적으로 리디렉션하는 것이 한 가지 방법입니다.

executable arguments >& StandardOutputs_${PBS_JOBNAME}.txt 
2

는 배열 작업의 각 작업은 환경 변수 PBS_ARRAYID 세트를 가져, 그래서 당신은 당신의 설정에서 것을 포함 할 수있다 : 당신의 엔진이 원천 징수 할 이유를 잘 모르겠어요

#PBS -o /path/for/$PBS_JOBNAME.$PBS_ARRAYID 

작업이 완료 될 때까지 파일을 출력하십시오. (그리드 엔진은 그렇게하지 않습니다.) 아마 임시 위치 나 임시 이름에 쓴 다음 작업이 끝나면 이동합니다.

+0

많은 도움을 주셔서 감사합니다. +1 덕분에 나에게 맞는 해결책을 찾아서 게시했습니다. –