또한 아래는 제가 받은 .bat 파일의 일부입니다. 파일 형식이 Windows 스크립트용인 줄 알았는데, 다음은 Unix 쉘 스크립트 아닌가요? 그렇다면 이 파일과 .sh 파일의 차이점은 무엇입니까?
#PBS -l mem=900mb,walltime=25000:00:00,cput=25000:00:00,nodes=1:ppn=1
cd $PBS_O_WORKDIR
./sample_file.x > tmp
답변1
이것은 쉘 스크립트 파일입니다("sh 파일"이라고 함). 그러나 다음 지시문도 포함되어 있습니다.PBS 스케줄러. 이는 여러 사용자가 작업을 제출할 수 있어야 하는 고성능 클러스터에서 자주 발견되는 시스템으로, 작업은 대기 중인 시스템에 배치되고 리소스가 사용 가능할 때 시작됩니다.
일반적으로 쉘 스크립트에서 a로 시작하는 모든 줄은 #
주석이며 쉘 스크립트 해석기(예: bash)에서는 무시됩니다. 이는 코드에 주석을 달 때 가장 일반적으로 사용되지만 한 가지 주목할만한 예외는 다음과 같습니다.셰르본 라인(예를 들어 #!/bin/bash
)는 쉘 인터프리터(로 시작)에 의해 무시되지만 #
커널은 스크립트를 제공해야 하는 인터프리터를 결정하기 위해 이를 읽습니다.
PBS는 유사한 접근 방식을 사용합니다. #PBS
PBS는 쉘 스크립트에 설명된 작업에 대한 매개변수를 설정할 때 주석을 읽습니다. 따라서 다음 줄은 다음과 같습니다.
#PBS -l mem=900mb,walltime=25000:00:00,cput=25000:00:00,nodes=1:ppn=1
다양한 옵션의 의미에 관계없이 900M 메모리를 사용하는 단일 노드에서 이 프로그램을 실행하도록 PBS에 지시합니다.
마지막으로 이것은 cd $PBS_DIRECTORY
일반적인 쉘 명령입니다. $PBS_DIRECTORY
작업을 수행해야 하는 디렉터리를 가리키도록 설정된 것으로 추정되는 변수입니다. 따라서 스크립트의 첫 번째 단계는 cd
해당 디렉터리로 이동하여 sample_file.x
해당 디렉터리에 있는 스크립트를 실행하는 것입니다.
자세한 내용은 사용 중인 PBS 클러스터의 관리자에게 문의하세요.
답변2
쉘 스크립트처럼 보입니다. 그렇다면 #이 주석의 시작 부분입니다. 이 스크립트에서는 $가 변수 대체에 사용됩니다. 즉, $PBS_O_WORKDIR이 환경 변수 PBS_O_WORKDIR의 값으로 대체됩니다. -l
명령이 아닙니다.
쉘 스크립트 이름이 Something.bat인 이유는 모르겠지만 원하는 대로 이름을 지정할 수 있습니다. 확장자는 아무 의미가 없습니다.