![순차 작업 실행을 위한 스크립트](https://linux55.com/image/3896/%EC%88%9C%EC%B0%A8%20%EC%9E%91%EC%97%85%20%EC%8B%A4%ED%96%89%EC%9D%84%20%EC%9C%84%ED%95%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
저는 최근에 Linux 사용법을 배우기 시작했습니다. 클러스터에서 직렬 작업을 실행하기 위해 bash 쉘에 스크립트를 작성하고 싶습니다. 나는 그러한 스크립트를 작성하는 방법에 대한 팁과 지침을 찾고 있었습니다. 나는 다음과 같이 쓸 수 있었습니다:
#!/bin/bash
#PBS -l nodes=1:ppn=8
#PBS -l walltime=1:00:00
#PBS -e test.err
#PBS -o test.log
cd /home/myuser/
echo "Running on host `hostname`"
echo "Time is `date`"
echo "Directory is `pwd`"
/home/myuser/comsol4.3b/bin/comsol batch -inputfile DF.mph -outputfile output.mph -batchlog out.log
마지막 줄은 실행할 프로그램(COMSOL이라고 함)을 호출합니다. 내 코드에서 누락된 것 중 하나는 "qsub" 명령입니다. 이 명령을 코드의 나머지 명령과 병합하는 방법을 모르겠습니다. "qsub" 명령을 통해 내가 사용하고 있는 프로그램을 호출하는 행을 수정하는 방법을 안내해 줄 수 있는 사람이 있습니까?
제 질문이 너무 간단해서 죄송합니다. 문제를 해결하려고 많은 시간을 보냈지만 안타깝게도 그럴 수 없습니다.
편집하다: 정리하자면, 코드 마지막 줄만 입력하면 마스터 노드에서만 실행되는데, 이는 원하지 않습니다. PBS 라인을 사용하여 할당한 리소스를 사용하도록 코드의 마지막 라인을 수정하고 싶습니다. 어떻게 해야 합니까?
기록에 따르면, 이 명령은 qhost
250개의 노드가 있고, 각 노드의 코어 수는 4코어/노드에서 16코어/노드 범위로 표시됩니다.
답변1
어떤 클러스터링 소프트웨어를 사용하고 있는지 지정하지 않았지만 요청한 사실에 따르면 qsub
GridEngine(및 그 파생물)과 PBS가 모두 해당 특정 명령을 사용한다는 것을 알고 있으므로 해당 명령부터 시작하겠습니다.
나는 GridEngine(및 그 파생물)에 가장 익숙하므로 해당 패키지를 사용하여 명령을 제출하려면 비슷한 작업을 수행해야 합니다.
예다음은 샘플 스크립트입니다. 이를 이라고 부르겠습니다 sample.bash
.
#!/bin/bash
echo "Working directory is $PWD"
이 스크립트를 제출하려면 다음을 수행해야 합니다.
$ qsub sample.bash
클러스터의 특정 노드를 대상으로 하려면 GridEngine 예약 소프트웨어가 노드 중 하나를 선택하고 그 중 하나에서 작업을 실행할 수 있도록 노드에 고유한 속성 집합을 포함해야 합니다.