여러 작업을 제출하기 위해 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은 작업의 전체 이름을 표시하므로 중요합니다.