현재 플랫폼 LSF를 활용하여 작업 실행을 관리하는 몇 가지 셸 스크립트가 있습니다.
이러한 스크립트는 결국 다른 작업 스케줄러를 사용하여 환경으로 마이그레이션됩니다.
마이그레이션 단계에서 이상적인 상황은 두 환경 모두에서 동일한 스크립트를 사용하여 작업 일정을 지원하는 것입니다. 따라서 LSF 환경의 존재를 감지하면 LSF 관련 지침을 사용하고, 그렇지 않으면 다른 환경과 관련된 명령을 사용합니다.
나는 몇 가지 가능한 해결책을 생각해 보았습니다.
LSF 특정 환경 변수 확인
예를 들어
$LSF_BINDIR
,$LSF_LIBDIR
,$LSF_SERVERDIR
if [[ -n $LSF_BINDIR ]]; then # Yes LSF else # No LSF fi
LSF 특정 명령의 가용성 확인
예를 들어
which bsub
,which bhosts
,which bjobs
if [[ -z $( which bsub 2>&1 | grep "/usr/bin/which" ) ]]; then # LSF present else # LSF absent fi
이러한 검사가 충분한지 또는 플랫폼 LSF가 시스템에 존재하는지 여부를 감지하는 더 좋고(해킹이 덜한) 더 안정적인 방법이 있는지는 모르겠습니다.
답변1
LSF를 마지막으로 사용한 지 몇 년이 지났는데, LSF Bulk User Guide(버전 3.2)에서 처음 언급한 명령은 lsid
클러스터 이름과 마스터 호스트 이름도 설치된 LSF 버전으로 표시한다는 것입니다.
내 생각에는 이 명령을 및 .exe와 같은 일부 일반 사용자 유틸리티와 함께 확인하는 것이 LSF를 탐지하는 좋은 방법이 될 것이라고 bsub
생각 합니다. bjobs
저는 이 세 가지 유틸리티가 포함된 다른 일정 관리 소프트웨어를 알지 못합니다(하지만 전문가는 아닙니다).
명령이 현재 경로에 있는지 확인하려면 대신 사용하지 마십시오(" 참조) which
.command -v
" which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?"):
if (command -v lsid && command -v bsub && command -v bjobs) >/dev/null; then
echo "LSF seems to be available"
fi