cd
SLURM Workload Manager를 사용하여 디렉터리()를 작업이 실행 중인 폴더로 직접 변경하려고 합니다 .
SLURM 스크립트가 실행되는 위치를 확인할 수 있습니다.
squeue --format %Z% -j 123
이제 추출도 가능합니다. 디렉토리 이름은 다음과 같습니다.
echo $(squeue --format "%Z" -j <jobid>) | awk '{print $2}'
(2021년 11월 26일 수정됨.) 다음과 같이 터미널에 폴더 이름이 표시됩니다.
/HDD_Drive/myfiles/myfolder
하지만 cd
이것을 연계하여 사용하면 여전히 현재 폴더에 있습니다. 흥미롭게도 동일한 방식으로 프로세스 PID를 확인하면 다음과 같습니다.
cd "$(pwdx <PID> | awk '{print $2}')"
내 디렉터리는 변경되지만 SLURM 작업 ID를 확인할 때 이상한 동작이 발생합니다. 간단히 말해서:
echo $(squeue --format "%Z" -j jobid ) | awk '{print $2}'
현재 디렉토리를 다음과 같이 표시합니다.
/HDD_Drive/myfiles/myfolder
하지만
cd $(squeue --format "%Z" -j 212 ) | awk '{print $2}'
프로그램
-bash: cd: too many arguments
그리고
cd $(squeue --format "%Z" -j 212 | awk '{print $2}')
나는 여전히 현재 디렉토리에 있습니다. 감사합니다!
답변1
디렉터리를 추출할 수 있었으므로 거의 성공했습니다. 이제 이를 매개변수로 사용하면 됩니다 cd
.
cd $(squeue --format "%Z" | awk '{print $2}')
해야 할 것. 명령 대체는 $( ... )
괄호로 묶인 명령의 출력으로 대체됩니다.
이는 시도에 사용하는 구문이 불필요하게 복잡하다는 것을 의미합니다. 이후는 $( cmd )
다음으로 대체됩니다.산출괄호 안에는 명령의 echo $( cmd )
기능과 간단한 호출이 나와 있습니다 cmd
.