여러 파일을 읽고 실행하는 Linux 쉘 스크립트

여러 파일을 읽고 실행하는 Linux 쉘 스크립트

시뮬레이션을 위해 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 &그렇지 않을 수도 있습니다. 한 번에 너무 많은 작업을 수행하여 스케줄러에 과부하가 걸리고 속도가 느려질 가능성이 더 높습니다.

관련 정보