slurm 스크립트가 실행 중인 디렉터리로 변경

slurm 스크립트가 실행 중인 디렉터리로 변경

cdSLURM 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.

관련 정보