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

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

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

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

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

1st_Script & echo $!

그런 다음 사용 ps -p <PID> || <2nd_script> 하지만 PID를 제공하지만 <1st_Script> & echo $!프로세스가 있는지 확인하면 ps -p <PID>아무것도 없습니다. 나는 1st_script가 실행되고 있다는 것을 알고 있습니다. 왜냐하면 그것이 실행하는 도커 컨테이너가 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초 미만이었을 것입니다.

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

관련 정보