도커 컨테이너를 사용하여 bash 스크립트를 올바른 순서로 실행하는 방법은 무엇입니까?

도커 컨테이너를 사용하여 bash 스크립트를 올바른 순서로 실행하는 방법은 무엇입니까?

여러 개의 작은 bash 스크립트(각각의 작은 스크립트는 docker 컨테이너를 실행함)를 실행하는 기본 bash 스크립트가 있지만 두 번째 스크립트는 첫 번째 스크립트 실행이 완료된 후에만 실행되기를 원합니다. 즉, 각 스크립트의 프로세스가 동시에 실행되지 않기를 바랍니다. 예:

1st_script.sh param1 param2 param3
2nd_script.sh param1 param2

온라인 조언이 나에게 효과가 없었습니다. 다음을 사용하여 1st_script의 PID를 얻으려고합니다.

1st_Script & echo $!

ps -p <PID> || <2nd_script> 그런 다음 <1st_Script> & echo $!PID가 제공되었지만 프로세스가 존재하는지 확인하면 ps -p <PID>아무것도 없습니다. 1st_script가 .so가 포함된 docker 컨테이너를 실행하기 때문에 실행 중이라는 것을 알고 있습니다 docker ps. 해당 프로세스도 나열되어야 합니다.ps -p <PID>

1st_Script && 2nd_Script && 3rd_Script && ...스크립트가 많고 읽을 수 없으므로 옵션이 아닙니다.

답변1

줄 연속은 가독성을 크게 향상시킬 수 있습니다.

script1 && script2 && script3 && scriptn

비교적

script1 \
  && script2 \
  && script3 \
  && scriptn

하지만 문제를 재현할 수 없습니다. 당신의 스크립트가 무엇이라고 생각하게 만드는가?아니요순차적으로 실행하시겠습니까?

나는 두 개의 테스트 스크립트를 만들었습니다. 각각은 다음을 포함합니다.

echo hello
sleep 15s

그러면 다음 중 하나만 포함하는 것이 있습니다.

./script1
./script2

time다음 출력을 얻기 위해 대기 시간을 측정합니다.

hello
hello

real    0m30.003s
user    0m0.002s
sys     0m0.001s

스크립트가 동시에 실행되는 경우 총 시간은 30초 미만이 됩니다.

당신의 질문은 당신이 원하는 것입니다컨테이너다음 스크립트로 이동하기 전에 실행을 중지하시겠습니까?

관련 정보