시뮬레이션을 위해 LAMMPS 소프트웨어를 실행하는 centos 클러스터를 사용하고 있습니다. 이제 폴더에서 여러 파일을 실행해야 합니다. 이제 각 파일에는 비슷한 유형의 하위 파일이 있습니다. 즉, 3개의 파일이 포함되어 있습니다. 1. 입력 데이터 파일(file.restart.3500000) 2. 스크립트(in.open) 3. PBS 파일( 마스터 노드 대신 하위 노드에서 코드를 실행하려면)
내 필요는 직렬이 아닌 너무 병렬적인 단일 명령을 사용하여 폴더의 모든 파일을 실행하는 것입니다. 즉, 첫 번째 파일이 완료된 후 두 번째 파일을 시작하는 대신 시스템이 모든 파일을 동시에 실행하기를 원합니다.
현재는 개별 폴더로 이동하여 여러 파일을 실행해야 하므로 시간이 많이 걸리는 스크립트를 실행해야 합니다.
파일을 실행하려면 폴더에서 "qsub runme.pbs" 명령을 한 번 실행합니다. 모든 파일의 내용이 동일하므로 이에 대해 조치를 취할 수 있습니까?
PS:- 저는 이 Linux 분야의 초보자일 뿐이므로 어떤 도움이라도 매우 도움이 될 것입니다.
답변1
다음과 같이 간단한 for 루프를 사용하여 실행할 수 있습니다.
cd /path/to/wherever
for d in D_[0-9]*/; do
cd "$d"
qsub runme.pbs
cd ..
done
qsub
각 작업을 작업 큐에 제출하면 클러스터는 스케줄러가 허용하는 대로 해당 작업을 실행합니다.
또는 pushd "$d"
and popd
대신 cd "$d"
and 를 사용하세요 cd -
.
qsub
백그라운드에서 모든 프로그램을 실행하는 데 약간의 이점( 사용)이 있을 수 있지만 qsub runme.pbs &
그렇지 않을 수도 있습니다. 한 번에 너무 많은 작업을 수행하여 스케줄러에 과부하가 걸리고 속도가 느려질 가능성이 더 높습니다.