"&" 연산을 순차적으로 실행하는 방법

"&" 연산을 순차적으로 실행하는 방법

내 스크립트에서 다음 명령을 실행합니다.

 SCRIPT_1="ksh -x script1.sh & ksh -x script2.sh";
 SCRIPT_2="ksh -x script3.sh & ksh -x script4.sh";
 eval $SCRIPT_1;
 sleep 20s;
 eval $SCRIPT_2;

$SCRIPT_2완료 되면 실행 하고 싶습니다 $SCRIPT_1. 그러나 현재는 별도의 라인에서 실행되는지 여부에 관계없이 모두 동시에 실행됩니다.

다음 스크립트를 실행하기 전에 다른 스크립트가 완료될 때까지 기다리는 방법에 대한 아이디어가 있습니까?

답변1

SCRIPT_1="ksh -x script1.sh & bg_pid=$!; ksh -x script2.sh; wait $bg_pid";
SCRIPT_2="ksh -x script3.sh & bg_pid=$!; ksh -x script4.sh; wait $bg_pid";
eval $SCRIPT_1;
sleep 20s;
eval $SCRIPT_2;

답변2

GNU Parallel을 사용하면 다음과 같은 작업을 수행할 수 있습니다.

parallel ksh -x ::: script1.sh script2.sh
parallel ksh -x ::: script3.sh script4.sh

관련 정보