작업 이름(CentOS)을 사용하여 클러스터에서 작업이 실행 중인지 확인하는 방법

작업 이름(CentOS)을 사용하여 클러스터에서 작업이 실행 중인지 확인하는 방법

여러 작업을 제출하기 위해 bash 스크립트를 실행하고 있습니다. 작업은 아직 실행되지 않은 경우에만 제출됩니다. bash 스크립트에서 if 문을 사용하여 "job123"이 이미 실행 중인지 또는 대기열에 있는지 간단히 확인하고 싶습니다.

qstat 및 qstatus에 대해 다른 옵션을 시도했지만 작업 이름으로 확인할 수 없는 것 같습니다. 이 정보를 검색하는 방법은 무엇입니까? 또한 이러한 출력은 단지 문자열일 뿐이므로 grep을 사용해 본 적도 없지만 특정 명령이 있어야 한다고 생각합니다.

답변1

Sun/Oracle Grid Engine의 qstat유틸리티를 사용하면 사용자 및 작업 ID별로 작업을 필터링할 수만 있습니다. 직위별로 필터링해야 하는 경우 grep다음을 수행해야 합니다.

qstat -u $USER | grep -w jobname

if- 문에 사용됨 :

if qstat -u $USER | grep -q -w "$jobname"; then
  # job is in the queue
else
  # job is not in the queue
fi

저도 인터넷으로 잠깐 검색해본 결과일부버전qstat 나타나다스위치를 사용하여 -j작업 이름으로 필터링하는 기능:

qstat -u $USER -j "$jobname"

이것이 작동하는지 확인할 수 없습니다.다른 버전이 유틸리티는 분명히 그렇게 할 수 없습니다(지원하지도 않습니다 -u).

답변2

해결할 수 있게 됐어요

qstat -r | grep -cw "작업 이름"

if 문에서 사용할 수 있는 0 또는 1을 제공합니다. 이것은 나에게 해킹처럼 보입니다. -r은 작업의 전체 이름을 표시하므로 중요합니다.

관련 정보