
여러 개의 작은 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초 미만이었을 것입니다.
당신의 문제는 당신이 원하는 것입니까?컨테이너다음 스크립트로 이동하기 전에 실행을 중지하시겠습니까?